Chrome扩展程序:内容脚本未找到dom元素

tldr

我正在编写一个Chrome扩展程序,并具有以下代码

popup.html:

   <script type='text/javascript' src='content.js'></script>

content.js:

var container = document.getElementById('viewer')
container.style['white-space'] = 'nowrap'

var node_list = document.getElementsByClassName('page')
Array.prototype.forEach.call(node_list, function(page) {
  page.style['display'] = 'inline-block'
})

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为的div viewer但是,当我查看页面的dom时,它就在那里。我究竟做错了什么?

PS:我没有在清单中指定内容脚本,因为我不希望它被自动触发,而仅当用户单击图标时才被触发。

光盘..

根据Google的文档,您可以使用程序化注入。

在后台脚本中,您可以添加:

chrome.browserAction.onClicked.addListener(function(tab) {
  chrome.tabs.executeScript(null, {file: "content.js"});
});

或者,您可以在弹出脚本中调用:

chrome.tabs.executeScript(null, {file: "content.js"});

(您需要以activeTab任何方式添加权限)

https://developer.chrome.com/extensions/content_scripts#pi

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Chrome扩展程序内容脚本中的Polymer元素

Chrome扩展程序-获取DOM内容

使用Chrome扩展程序更改DOM内容

内容脚本之间的通信| Chrome 扩展程序

使用ReactJS构建时,Chrome扩展程序内容脚本未注入DOM

Chrome扩展程序无法选择DOM元素

在Chrome扩展程序中将远程脚本作为内容脚本

chrome扩展内容脚本中的DOM节点为空

动态地注入内容脚本 - Chrome扩展程序

如何包含Chrome扩展程序内容脚本的样式?

Chrome扩展程序-在内容脚本中接收请求

Chrome扩展程序内容脚本未触发代码

如何选择何时启动Chrome扩展程序的内容脚本?

Chrome扩展程序的内容脚本不影响特定网站

Chrome扩展程序:检查是否已插入内容脚本

Chrome扩展程序:如何全局捕获/处理内容脚本错误?

使用背景页面和内容脚本的Chrome扩展程序

Chrome扩展程序-在URL更新上加载内容脚本

Chrome扩展程序后台页面和内容脚本同步

Chrome扩展程序,内容脚本和XSS攻击

是否可以通过Chrome扩展程序内容脚本修改Cookie?

允许在Chrome扩展程序内容脚本中使用jQuery

将按钮注入网站(Chrome扩展程序内容脚本)

如何取消Chrome扩展程序内容脚本中的事件绑定?

Chrome扩展程序:需要时调用内容脚本

Chrome扩展程序内容脚本不起作用

Chrome扩展程序:注入后如何删除内容脚本CSS?

Chrome扩展程序-内容脚本匹配是否仅限权限?

Chrome扩展程序不显示内容脚本中的数据