![](/img/trans.png)
[英]"Cannot read property of undefined" when using chrome.tabs or other chrome API in content script
[英]Why is chrome.tabs undefined in the background page?
我正在尝试编写Google Chrome扩展程序。
文档甚至示例代码都说后台页面可以使用chrome.tabs.executeScript
方法在活动选项卡上运行JavaScript,但是当我在调试器中打破时, chrome.tabs
总是undefined
的。
这种行为在我的代码和Google示例代码中都很明显。
真实问题:如何在Chrome扩展程序中的后台页面上的活动标签页上运行JavaScript?
background.js:
chrome.browserAction.onClicked.addListener(function(tab) {
debugger;
// chrome.tabs is undefined here
chrome.tabs.executeScript({
code: "console.log('hi')"
});
});
manifest.js:
{
"manifest_version": 2,
"name": "Hello World",
"description": "Says 'hello' to the world.",
"version": "0.1",
"permissions": ["tabs", "activeTab"],
"browser_action": {
"default_title": "hi"
},
"background": {
"scripts": ["background.js"]
}
}
我试过的事情:
background
上的persistent
标志设置为false
, true
, "false"
和"true"
"tabs"
权限 我尝试访问chrome.tabs
时运行时抛出此错误:
Lazy require of tabs.binding did not set the binding field
wOxxOm
的评论正确诊断出来:
当您使用
debugger;
时,这是[在Chrome中]的错误debugger;
声明。
但是,我发现它比这更深入。 只有一个断点足以让我解决这个问题。 感谢这个SO答案指出断点也可能导致这个问题。
您必须彻底“清除”调试器。 重新加载扩展时,必须关闭调试器窗口。 简单地关闭调试器窗口而不重新加载不足以使问题消失。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.