单击事件在文档加载时触发 Tampermonkey

Click event fires on document load Tampermonkey

我正在编写一个 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);

基本上,当页面加载时 "Working" 警报会触发,但当我单击按钮时不会。我也没有得到控制台反馈。我错过了什么?

那是因为您是在页面加载时调用警报,而不是在点击时调用,您可能还需要一个匿名函数

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