Chrome扩展程序的activeTab权限问题

时间:2014-11-24 09:25:31

标签: google-chrome google-chrome-extension

我在我的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",
 ]

感谢您的帮助!

2 个答案:

答案 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://