javascript - 当父元素阻止冒泡时,不会触发 click 事件

标签 javascript event-handling cross-browser nested event-bubbling

我在一些现代浏览器中进行了测试,但结果不一致。我确信这与捕获与冒泡事件支持差异有关。我已经设置了一个测试环境来复制这里的问题:pastebin并使用this service运行实时预览。

问题是这样的:当祖先阻止冒泡时,某些浏览器将忽略 anchor href 单击事件。这是没有意义的,因为中间元素会在冒泡之前触发其事件,但 anchor 元素不会。为什么 javascript click 事件有效,但 href 事件无效?

以下是按下“单击我”时的结果:

Chrome 9.0.597.98:忽略 href + 打印内部和外部

IE 8.0.6001.19019:href 有效 + 打印内部和外部

Firefox 3.6.13:忽略 href + 打印内部和外部

所以我的最终问题是:当祖先元素阻止事件冒泡时,如何使 href 能够跨浏览器工作?任何见解将不胜感激。

编辑:

我只想指出,Pointy 的评论中的讨论仍在继续,我还要感谢他的巨大帮助!

最佳答案

问题是事实并非如此

event.returnResult = false;

在 IE 中,它是:

event.returnValue = false;

该链接能够在 IE 中通过,因为您没有正确地告诉浏览器不要执行默认操作。

如果您希望发生默认操作,则不要调用“.preventDefault()”,也不要将“returnValue”设置为false

关于javascript - 当父元素阻止冒泡时,不会触发 click 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5106827/

相关文章:

javascript - 将数据从 View 发送到操作

javascript - 谷歌地图 : get user's location like google

c# - DataBindingComplete 上 DataGridView 中的单元格格式

c# - UWP 运行查询作为类型 - MVVM

javascript - HTML 事件处理程序与 React 事件处理程序

javascript - 功能没有出现在浏览器中

javascript - Phonegap 后退按钮事件,检测历史记录中的第一页?

css - Chrome 无法正确呈现页面。它在 Firefox/IE 中完美运行

javascript - 卸载前发送 AJAX 到服务器

html - 为什么我的搜索栏中的占位符文本没有出现在 Firefox 中