Javascript Chrome扩展:内容脚本找不到dom元素
我正在编写一个chrome扩展,并有以下代码 popup.html:Javascript Chrome扩展:内容脚本找不到dom元素,javascript,dom,google-chrome-extension,Javascript,Dom,Google Chrome Extension,我正在编写一个chrome扩展,并有以下代码 popup.html: <script type='text/javascript' src='content.js'></script> manifest.json: { "name": "horizontal_pdf", "version": "0.0.1", "manifest_version": 2, "browser_action": { "default_ti
<script type='text/javascript' src='content.js'></script>
manifest.json:
{
"name": "horizontal_pdf",
"version": "0.0.1",
"manifest_version": 2,
"browser_action": {
"default_title": "My Title",
"default_popup": "popup.html",
"default_icon": {
"16": "icons/16x16.jpg",
"32": "icons/32x32.jpg"
}
}
}
但当我单击图标并查看控制台时,我看到错误消息:
Uncaught TypeError: Cannot read property 'style' of null
在content.js的第2行。因此,它无法找到id为viewer
的div。但是当我看到页面的dom时,它就在那里。我做错了什么
PS:我没有在清单中指定内容脚本,因为我不希望它自动触发,但只有当用户单击图标时才会触发 根据谷歌的文档,你可以使用程序注入 在后台脚本中,您可以添加:
chrome.browserAction.onClicked.addListener(function(tab) {
chrome.tabs.executeScript(null, {file: "content.js"});
});
或者,在弹出脚本中,您可以调用:
chrome.tabs.executeScript(null, {file: "content.js"});
(您需要以任何方式添加activeTab
权限)
如果你想在popup.html/js中获得dom,你必须为内容脚本添加content.js,然后向popup.js发送消息。你可以从popup.js调用content.js来获取信息。。。后台脚本无法访问dom。。。这就是我所做的…在DOM的这一部分准备就绪之前脚本可能正在运行吗?您的清单是什么样子的?使用清单进行了更新所以content.js中的代码正在弹出窗口中查找元素?不,是实际页面
chrome.tabs.executeScript(null, {file: "content.js"});