javascript - getElementsByTagName 在 Chrome 扩展程序中不起作用

标签 javascript google-chrome-extension getelementsbytagname

出于某种原因,当我尝试在 Chrome 扩展程序中使用 getElementsByTagName 时,我得到一个空列表。例如:

background.js

document.body.onload = function(){
    chrome.browserAction.onClicked.addListener(function(tab) {
        alert(document.getElementsByTagName("div").length);
    });
};

会提醒我“0”。此外,如果在我的 addListener 函数中创建一个 div 并将其附加到 body 中,长度将变为“1”。所以看起来扩展程序只检测单击扩展程序后创建的对象...有什么想法吗?

附注这是我的 list 文件

ma​​nifest.json

{
  "name": "tester",
  "version": "1.0",
  "manifest_version": 2,
  "background": {
      "scripts": ["background.js"],
      "persistent": false
  }
}

最佳答案

background.js脚本在后台页面上下文中执行。在这里,由于您只声明了一个后台脚本,因此您的后台页面已生成,并且没有任何内容。

您可以通过转到 chrome://extensions/并单击 Inspect views: _generated_background_page.html 来查看生成的背景页面。您的扩展程序旁边的链接。它看起来像这样:

<!DOCTYPE html>
<html>
  <head></head>
  <body>
    <script src="background.js"></script>
  </body>
</html>

如您所见,没有 <div>元素,因此 document.getElementsByTagName("div").length将返回 0。

如果你想获取网页的内容,你必须使用 content script .

关于javascript - getElementsByTagName 在 Chrome 扩展程序中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19445365/

相关文章:

javascript - Chrome 扩展 - 使用 tabId 更新某些选项卡

javascript - Chrome 扩展程序事件页面带音频永不停歇

javascript - 当鼠标悬停在单词上时获取单词

javascript - 从 for in 循环调用增量器

javascript - 根据 href 将 <a> 目标更改为 "_blank"

javascript - 是否有任何规范说明什么仍然被视为有效的 JSONP?

javascript - Angular Material $mdDialog.confirm 具有超过 "OK"和 "Cancel"选项

javascript - 使用 Modernizr 使用 window.location.origin

php - jQuery函数查找表格行中的哪个按钮被点击

Javascript getElementsByTagName ("div") 我在标记什么?