Chrome扩展内容脚本无法访问页面';它被注入的DOM

Chrome扩展内容脚本无法访问页面';它被注入的DOM,dom,google-chrome-extension,content-script,Dom,Google Chrome Extension,Content Script,我试图从用户正在查看的页面中提取数据,并将数据发送到扩展弹出窗口。从当前页面提取信息时遇到问题。在阅读了google代码教程之后,我设置了清单和内容脚本,如下所示。当我转到一个测试页面时,它的span带有id=“comments”,我的注入内容脚本变量总是以null结束。有人知道我会错过什么吗?谢谢 manifest.json ================= { "name": "Sample Extension", "version": "0.0.1", "desc

我试图从用户正在查看的页面中提取数据,并将数据发送到扩展弹出窗口。从当前页面提取信息时遇到问题。在阅读了google代码教程之后,我设置了清单和内容脚本,如下所示。当我转到一个测试页面时,它的span带有id=“comments”,我的注入内容脚本变量总是以null结束。有人知道我会错过什么吗?谢谢

manifest.json
=================
{
    "name": "Sample Extension",
    "version": "0.0.1",
    "description": "Sample extension",
    "icons": {"128": "icon.png"},
    "permissions": [
        "tabs", "<all_urls>"
    ],
    "browser_action": {
        "default_icon": "browseraction.png",
        "default_title": "Sample",
        "popup": "popup.html"
    },
    "content_scripts": [
        {
            "matches": ["http://*/*", "<all_urls>" ],
            "js": ["scripts/contentscript.js"]
        }
    ]
}

contentscript.js
===================
var comments = document.getElementById("comments");
alert( comments.innerText );
manifest.json
=================
{
“名称”:“示例扩展”,
“版本”:“0.0.1”,
“说明”:“示例扩展”,
“icons”:{“128”:“icon.png”},
“权限”:[
“制表符”
],
“浏览器操作”:{
“默认图标”:“browseraction.png”,
“默认标题”:“示例”,
“popup”:“popup.html”
},
“内容脚本”:[
{
“匹配项”:[“http://*/*,”“],
“js”:[“scripts/contentscript.js”]
}
]
}
contentscript.js
===================
var comments=document.getElementById(“comments”);
警报(comments.innerText);

有可能在脚本执行后加载注释

尝试在清单中设置:

        "run_at" : "document_end",
或者,如果怀疑有AJAX加载,请稍后使用
setTimeout
调用代码


当然,最好的方案取决于精确的页面及其内部工作。

谢谢,伙计们!我利用了这两个建议,使用了“run_at”和“textContent”,它们工作得非常好。
innerText
是chrome扩展开发人员手册中提倡的这里不需要避免它。@Xan说到
innerText
,它现在在Chrome中得到了支持,这就是我缩短答案的原因。