Greasemonkey - 给现有按钮添加onclick事件

3
我目前正在编写一个Greasemonkey脚本,以添加一个onclick事件到现有按钮上,以显示一个确认弹出窗口。
这是现有的HTML代码:
<input type="button" id="previewOrder" title="" class="ui-button ui-widget ui-state-default ui-corner-all" role="button" aria-disabled="false" value="Preview Order">

我想出了下面的JavaScript代码,但它无法工作或失败了。
function confirm () {
    alert ("Sure?");
}

document.getElementById("previewOrder").addEventListener("click", confirm(), false);

有什么建议可以让这个工作起来吗?

你不能把函数命名为confirm,这个名称太模糊了。给它起一个有意义的名字并避免冲突。 - dandavis
2个回答

3

confirm()是一个本地的窗口方法。因此,将其放入一个函数中:

function myFunction() {
    confirm( ... );
}

例子

function myFunction() {
  confirm("Sure?");
}

document.getElementById("previewOrder").addEventListener("click", myFunction);
<input type="button" id="previewOrder" title="" class="ui-button ui-widget ui-state-default ui-corner-all" role="button" aria-disabled="false" value="Preview Order">


应该可以工作!你必须将 JavaScript 放在 <input> 后的 <body> 结尾处。我已经添加了一个示例! - user3589620

1
感谢您的帮助。最终,问题似乎是由于脚本在页面(尤其是目标元素)加载之前执行导致的。添加waitForKeyElements()实用程序后,代码正常工作。
请参见https://dev59.com/oGcs5IYBdhLWcg3wYy9T#12899331

function myConfirm () {
confirm ("Sure?\n\nCheck rules.\n\n");
}

function setConfirm () {
document.getElementById("previewOrder").addEventListener("click", myConfirm);
}

waitForKeyElements ("#previewOrder", setConfirm);


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接