chrome.tabs不可用:您无权访问此API

时间:2013-06-24 12:40:29

标签: javascript jquery google-chrome google-chrome-extension

我设置了此权限

"permissions": [ "tabs" ],

在.js中我使用

chrome.tabs.getSelected(null, function(tab) {
var page_url = tab.url;
$("#chrome_ext_qr_code img").attr("src", ...);
$("#chrome_ext_qr_code input").val(...);
});

为什么我收到此错误?

chrome.tabs不可用:您无权访问此API。确保manifest.json中包含所需的权限或清单属性。

3 个答案:

答案 0 :(得分:1)

如上所述,斯蒂芬的解决方案不再适用。 AFAICT,看起来谷歌不再允许content-script中描述的回调访问标签API。

所有这些意味着您必须在background.js中指定重定向:

(内容 - 的script.js)

chrome.extension.sendRequest({ command: "selected-tab" });

(background.js)

chrome.extension.onRequest.addListener(function(request, sender) { 
  if (request.command == "selected-tab") { 
    chrome.tabs.getSelected(null, function(){
      // your code here
      // var page_url = tab.url etc, etc
    }; 
  } 
});

答案 1 :(得分:0)

正如Rob W已经提到的,您无法访问内容脚本中的标签API。

您必须向后台脚本发送请求,该脚本将返回所选标签。

(内容 - 的script.js)

chrome.extension.sendRequest({ command: "selected-tab" }, function(tab) {
    var page_url = tab.url;
    // your code
});

background.js

chrome.extension.onRequest.addListener(function(request, sender, sendResponse) {
    if (request.command == "selected-tab") {
        chrome.tabs.getSelected(null, sendResponse);
    }
});

答案 2 :(得分:0)

Google不允许(不再?)从内容脚本中访问标签对象。

如果你想获得标签,你可以从发送者发送到收听者的回调函数:

chrome.extension.onRequest.addListener(function(request, sender, sendResponse) {
    console.log("Received from tab: ", sender.tab);
});