Javascript Chrome扩展:内容脚本找不到dom元素

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

我正在编写一个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_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"});