我正在尝试使用 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 );
最佳答案
您的代码非常基础和直接,它不可能成为问题的原因。事实上,我只是使用了您的确切代码(使用您提供的“says”类和网站)并且 alert()
每次都说 1
(这是正确的)。
我最好的猜测是您在 contentscript.js
中进行更改后没有重新加载您的扩展,或者其他一些扩展正在干扰并导致这种奇怪的行为。在测试您的扩展程序之前尝试禁用其他扩展程序。
关于dom - Chrome 扩展程序 - 内容脚本无法按类名查找元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11042707/