Chrome扩展:内容脚本找不到dom元素
Chrome extension: content script not finding dom elements
我正在编写一个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为viewer
的div。但当我看到页面的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
如果你想在popup.html/js中获得dom,你必须为内容脚本添加content.js,然后向popup.js发送消息,你可以从popup.jss调用content.js来获取信息。。。后台脚本无法访问dom。。。这就是我所做的。。。
相关文章:
- 气质的“nestRemoting()”有时可以'找不到关系
- 错误405:向Java控制器(Ajax)发送JSON时找不到POST方法
- 找不到模块捆绑包
- for循环中的javascript if语句找不到==
- 当创建和销毁都是AJAX时,在DOM中找不到ID
- IE8和9不支持DOM.可以'我找不到答案
- FusionCharts--找不到容器 DOM 元素
- 克隆并附加唯一 ID 后找不到 DOM 元素
- jQuery 选择器在 DOM 中找不到添加的元素
- document.getElementById 找不到 qUnit DOM 元素
- 在 DOM 元素中找不到匹配项时显示消息
- $(document).ready() 中的函数找不到 DOM 的主体元素
- 主干Marionette布局View can'找不到DOM元素
- 如果在加载DOM时找不到javascript库,我该如何动态更改它
- Chrome扩展:内容脚本找不到dom元素
- 使用jquery添加一个字符串到DOM,然后使用jquery选择器找不到它
- 为什么我的Backbone.js代码段找不到DOM模型?
- 找不到DOM的文档.IE8中的getElementById
- 在DOM中找不到RequireJs对象(用于UI访问)
- 为什么jQuery或DOM方法(如getElementById)找不到该元素