我有这个代码:
chrome.webRequest.onCompleted.addListener(function(details){
console.log(details);
});
Run Code Online (Sandbox Code Playgroud)
我正在尝试理解和使用 chrome.webRequest API。我无法弄清楚为什么代码不起作用,我只是想通过记录 chrome 发出的所有请求来尝试 API。我给自己定的权限在我的清单上这两个模式http://*/*和https://*/*但我将永远从我的背景脚本这个错误:Uncaught TypeError: No matching signature.任何帮助表示赞赏。
我正在实现getUserMedia()录制音频消息。我想录制音频,然后使用 websocket 将其传递给另一个对等点。我怎么能做到这一点?我已经搜索了 SO,我只发现了一些有趣的问题,但没有任何东西可以指导我找到可行的解决方案。我正在将 Pusher API 用于我的应用程序的 websocket 部分。这是我正在测试的代码。
$(document).on("click", ".audio-chat",function(){
console.log('clicked');
var channel = $('input[name="channelName"]').val();
navigator.mediaDevices.getUserMedia({
audio: true
})
.then(function(stream){
var mediaRecorder = new MediaRecorder(stream);
mediaRecorder.start();
console.log(mediaRecorder.state);
console.log("recorder started");
mediaRecorder.ondataavailable = function(e) {
chunks.push(e.data);
console.log(chunks);
}
setTimeout(function(){
mediaRecorder.stop();
console.log(mediaRecorder.state);
console.log("recorder stopped");
var blob = new Blob(chunks, {'type':'audio/webm; codecs=opus'});
//console.log(blob);
chunks = [];
const audioUrl = window.URL.createObjectURL(blob);
var data = {channel:channel,message:audioUrl,socketId:socketId}
$.post('api/message.php', data);
}, 10000);
});
});
Run Code Online (Sandbox Code Playgroud) 我想用一个按钮创建一个简单的用户交互,以开始和停止录制音频,例如whatsapp。我查看了stackoverflow来了解我是否写错了,因为我知道不可能在同一元素上绑定两个click事件,因此我决定在codepen上测试代码,但不会产生预期的结果:
$('#audioBtn').on('click' ,function(e){
e.preventDefault();
if( $(this).hasClass('active') ){
$(this).removeClass('active')
.addClass('inactive');
console.log('Recording stopped');
}
});
$('#audioBtn').on('click' , function(e){
e.preventDefault();
if( $(this).hasClass('inactive') ){
$(this).addClass('active')
.removeClass('inactive');
console.log('Recording start');
}
});
Run Code Online (Sandbox Code Playgroud)
发生的事情是两个事件同时在控制台上登录,但这不是我想要的,我只想使用相同的按钮来开始和停止录制,并在用户录制音频时更改图标。有什么办法吗?