Chrome扩展程序 - 内容脚本无法按类名查找元素

时间:2012-06-14 23:24:18

标签: dom google-chrome-extension getelementsbyclassname content-script

我尝试使用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 );

1 个答案:

答案 0 :(得分:3)

您的代码非常简单明了,无法成为问题的原因。事实上,我刚刚使用了您的确切代码(使用“提供的”类和您提供的网站),alert()每次都说1(这是正确的)。

我最好的猜测是,您在contentscript.js进行更改后没有重新加载扩展程序,或者某些其他扩展程序正在干扰并导致此奇怪行为。尝试在测试扩展程序之前禁用其他扩展程序。