我设置了此权限
"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中包含所需的权限或清单属性。
答案 0 :(得分:1)
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);
});