我在我的Chrome扩展程序的background.js脚本中运行以下代码:
chrome.browserAction.onClicked.addListener(captureCurrentTab());
function handleCapture(stream) {
console.log('content captured');
console.log("backround.js stream: ", stream);
alert(stream);
// localStream = stream; // used by RTCPeerConnection addStream();
// initialize(); // start signalling and peer connection process
}
function captureCurrentTab() {
console.log('reqeusted current tab');
chrome.tabs.query({active : true}, function(tab) {
console.log('got current tab');
chrome.tabCapture.capture({
audio : true,
video : false
}, handleCapture);
});
}
然而,这给了我以下错误:
在运行
runtime.lastError
时取消选中tabCapture.capture
:尚未为当前页面调用扩展(请参阅activeTab权限)。无法捕获Chrome页面。
但是,我特别在manifest.json中授予activeTab权限:
"permissions": [
"tabs",
"tabCapture",
"activeTab",
]
感谢您的帮助!
答案 0 :(得分:4)
当声明activeTab
权限时,只有当用户执行某些暗示他们希望您有权访问的操作时,才能访问当前选项卡。
以下用户手势启用activeTab:
- 执行浏览器操作
- 执行页面操作
- 执行上下文菜单项
- 从命令API
执行键盘快捷键- 接受多功能框API的建议
错误告诉您捕获当前标签,因为用户尚未执行上面列出的操作之一。
看起来您可能已经理解了这一点,但代码中只有一个错误。将captureCurrentTab
注册为浏览器操作的单击侦听器时,实际上是在执行它而不是通过引用传递函数。将第一行更改为:
// Remove the () after captureCurrentTab
chrome.browserAction.onClicked.addListener(captureCurrentTab);
答案 1 :(得分:2)
Chrome pages cannot be captured.
表示您尝试捕获不允许的chrome://
,chrome-extension://
或类似Chrome专用页面。确保当前页面为http://
或https://
。