通过 addEventListener 添加点击事件以确认从超链接进行导航
我正在编写一些 JavaScript,我本质上想做的是在用户单击链接时确认他们确实想要单击它。
我的代码当前如下所示:
var Anchors = document.getElementsByTagName("a");
for (var i = 0; i < Anchors.length ; i++)
{
Anchors[i].addEventListener("click", function () { return confirm('Are you sure?'); }, false);
}
此代码显示了我期望看到的确认框,但随后无论按下确认框中的按钮如何都会导航到链接。
我相信这个问题与我使用 addEventListener
(或其实现的限制)有关,因为如果我在 HTML 文件中手动添加以下内容,则行为正是我所期望的:
<a href="http://www.google.com" onclick="return confirm('Are you sure?')">Google</a><br />
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我更改了您的
onclick
函数以包含对event.preventDefault()
的调用,并且它似乎可以正常工作:(请参阅 http://jsfiddle.net/ianoxley/vUP3G/1/)
I changed your
onclick
function to include a call toevent.preventDefault()
and it seemed to get it working:(See http://jsfiddle.net/ianoxley/vUP3G/1/)
您必须阻止默认事件处理程序的执行。
请参阅 如何使用 Javascript 的 addEventListener()覆盖 HTML 表单的默认 Submit() 行为
--编辑--
我们,我在编辑答案时看到您已经回答了自己
You have to prevent the execution of the default event handler.
See How to use Javascript's addEventListener() to override an HTML Form's default submit() behavior
--EDIT--
We'll, I've seen you've answered yourself while I was editing the answer
从原始海报问题中提取的解决方案
经过更多搜索,我在 Stack Overflow 上找到了答案:从点击处理程序返回 false 在 Firefox 中不起作用
如果有人发现这个问题而不是另一个问题,基本上是在使用
addEventListener
方法连接事件,不能只使用 return false;要取消该操作,您必须使用事件的preventDefault()
方法,因此我上面的代码现在变为:Solution pulled from Original Poster question
After some more searching I have found the answer here on Stack Overflow: Returning false from click handler doesn't work in Firefox
In case anyone finds this question instead of the other, basically when using the
addEventListener
method of wiring events, you cant just use return false; to cancel the action, you must instead use thepreventDefault()
method of the event, so my code from above has now become: