3

我设置了这个权限

"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 中包含所需的权限或清单属性。

4

3 回答 3

1

stephan's solution, as described, no longer works. AFAICT, it looks like google no longer allows callbacks described in content-script access to the tabs API either.

All this means is that you'll have to specify your redirect in your background.js instead:

(content-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
    }; 
  } 
});
于 2013-06-29T18:35:57.060 回答
0

正如 Rob W 已经提到的,您无法在内容脚本中访问选项卡 API。

您必须向返回所选选项卡的后台脚本发送请求。

(内容-script.js)

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

背景.js

chrome.extension.onRequest.addListener(function(request, sender, sendResponse) {
    if (request.command == "selected-tab") {
        chrome.tabs.getSelected(null, sendResponse);
    }
});
于 2013-06-25T10:51:14.643 回答
0

Google 不允许(不再?)从内容脚本内部访问选项卡对象。

如果要获取选项卡,可以从发送者发送到侦听器的回调函数中执行此操作:

chrome.extension.onRequest.addListener(function(request, sender, sendResponse) {
    console.log("Received from tab: ", sender.tab);
});
于 2013-10-02T11:59:17.527 回答