我尝试使用Chrome扩展程序的内容脚本从页面访问具有特定类名的元素。到目前为止,内容脚本可以使用document.getElementById()成功找到具有特定id的元素,但是使用document.getElementsByClassName()或jQuery的$(“。className”)不会产生任何结果。为了测试,我使用'header'作为我的类名,我运行扩展的每个网站都导致数组长度为0.任何想法我可能会缺少什么?以下是我一直在测试的内容:
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": [ "<all_urls>" ],
"js": ["scripts/contentscript.js"],
"run_at": "document_end"
}
]
}
contentscript.js
===================
var elems = document.getElementsByClassName("header");
alert( elems.length );
答案 0 :(得分:3)
您的代码非常简单明了,无法成为问题的原因。事实上,我刚刚使用了您的确切代码(使用“提供的”类和您提供的网站),alert()
每次都说1
(这是正确的)。
我最好的猜测是,您在contentscript.js
进行更改后没有重新加载扩展程序,或者某些其他扩展程序正在干扰并导致此奇怪行为。尝试在测试扩展程序之前禁用其他扩展程序。