3

我正在尝试使用 Chrome 扩展的内容脚本从页面访问具有特定类名的元素。到目前为止,内容脚本可以使用 document.getElementById() 成功找到具有特定 id 的元素,但使用 document.getElementsByClassName() 或 jQuery 的 $(".className") 不会产生任何结果。为了测试,我使用“标题”作为我的类名,并且我在其上运行扩展的每个网站都导致数组长度为 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 );
4

1 回答 1

3

您的代码非常基本且直接,它不会成为问题的原因。实际上,我只是使用了您的确切代码(使用您提供的“说”类和网站)并且alert()每次都说1(这是正确的)。

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

于 2012-06-15T07:08:06.487 回答