【发布时间】:2017-08-25 16:59:13
【问题描述】:
我正在尝试向第三方网站上的页面动态添加按钮,并使用 Chrome 扩展程序向按钮添加点击处理程序。我已阅读 onClick within Chrome Extension not working,将处理程序添加到单独的 js 文件中。
问题是 Chrome 试图在网络服务器中找到 js 文件,而不是在扩展程序中。所以,404 发生了。
假设网页是“http://www.somecompany.com/somepage.html”。我的扩展代码如下。
var aButton = document.createElement('button');
aButton.id = "aButton";
thatDiv.appendChild(aButton);
var aScript = document.createElement("script");
aScript.src="aButtonHandler.js";
thatDiv.appendChild(aScript);
Chrome 尝试加载“http://www.somecompany.com/aButtonHandler.js”,当然真实网站没有该脚本,所以会发生 404。如何向网站添加按钮并在单击按钮时执行alert("hello");?
添加
我将aButtonHandler.js 中的代码添加到内容脚本本身的末尾,但没有任何反应。怎么了?
内容脚本.js
addButton();
function addButton()
{
//adds a button by the code above.
}
document.addEventListener('DOMContentLoaded', function() {
var theButton = document.getElementById('aButton');
theButton.addEventListener('click', function() {
alert('damn');
});
});
添加
这行得通。
内容脚本.js
addButton();
function addButton()
{
//adds a button by the code above.
aButton.addEventListener('click', function() {
alert('damn');
});
}
【问题讨论】:
-
您链接的问题是针对扩展程序自己的页面,例如弹出窗口或选项页面。对于内容脚本,您不需要加载单独的文件。只需在内容脚本中附加监听器即可。
-
我试过了,但是没有用。我已将代码添加到问题中。
-
可能 id 与页面上的某些内容冲突。也许有别的东西在干扰。也许您没有重新加载选项卡,因此不会注入内容脚本。只需在内容脚本的 devtools 中设置断点,然后查看会发生什么,变量和元素的值是什么等等。
-
啊。成功。只是直接打电话给
addEventListener。谢谢你帮助我。 -
是的,默认情况下,内容脚本是在 DOMContentLoaded 之后加载的。
标签: javascript google-chrome-extension onclick