我正在编写一个 Tampermonkey 脚本,它向页面添加一个按钮,然后向该按钮添加一个 onClick 事件。我在页面上有我想要的按钮,但是当我尝试按照有关用户脚本中单击事件的相关问题中的建议使用“addEventListener”附加单击事件时,事件处理程序在页面加载时触发,而不是在按钮单击时触发.
var testbutton = document.createElement("button");
testbutton.addEventListener('click', alert("Working"), false);
testbutton.id = "testbutton";
testbutton.innerHTML = "This is a button";
testElement.appendChild(testbutton);
基本上,当页面加载时会触发“工作中”警报,但当我单击按钮时不会。我也没有得到控制台反馈。我错过了什么?
最佳答案
那是因为你在页面加载时调用警报,而不是在点击时,你可能还需要一个匿名函数
var testbutton = document.createElement("button");
testbutton.addEventListener('click', function() {
alert("Working");
}, false);
testbutton.id = "testbutton";
testbutton.innerHTML = "This is a button";
testElement.appendChild(testbutton);
只要你给一个函数加上括号,它就会被立即调用,在一个事件上调用这个函数,你只是想引用它,这里有一些例子
addEventListener('click', alert("Working"), false); // called immediately
addEventListener('click', alert, false); // called on click
addEventListener('click', function() {}, false); // called on click
addEventListener('click', function() {
alert();
}, false); // called on click
关于javascript - 单击事件在文档加载时触发 Tampermonkey,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29348451/