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

标签 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 );

最佳答案

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

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

关于dom - Chrome 扩展程序 - 内容脚本无法按类名查找元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11042707/

相关文章:

visual-studio - 如何在 Google Chrome 扩展程序中创建侧边栏?

javascript - querySelectorAll 和 getElementsBy* 方法返回什么?

javascript - 计算类元素的未知/动态数组长度

javascript - Dojo 按 ID 查询默认为 getElementById

javascript - Phantomjs:在将其作为网页打开之前修改html dom

java - 对象存在于 HTML 中,但我无法选择它

javascript - 安装扩展后,Safari 中的选项卡重新加载

google-chrome-extension - Chrome 扩展标识 : OAuth2 request failed: Service responded with error: 'bad request'

javascript - 使用 JavaScript 选择和删除类

javascript - 如何使用 JavaScript 测量 DOM 节点内容区域的尺寸?