出于某种原因,当我尝试在 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 文件
manifest.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/