繁体   English   中英

阻止默认操作但不停止事件传播

[英]Prevent default action but don't stop the event propagating

我需要在 IE6+ 上运行的代码,只是想检查一下我是否错过了对任何浏览器的支持。

这段代码有效,我已经在 IE7、Firefox 10、Google Chrome 17 上进行了测试,但我没有其他浏览器要测试。 我想知道是否有其他人这样做并知道代码是什么,我是否错过了使用我的代码对任何浏览器的支持:

    if (!e) e = window.event;       
    e.returnValue = false;      
    if (e.preventDefault) e.preventDefault();           
    return false;

preventDefault()是 w3c DOM Level 2 标准,所以它应该被所有现代浏览器实现。

然而,IE6 不是现代浏览器,它没有实现 DOM Level 2 或preventDefault() 另一种 IE6 使用将event.returnValue设置为false ,就像您所做的那样。 请注意,这不会影响事件冒泡(在 IE6 中,这将通过将event.cancelBubble设置为 true 来实现)。 所以你的代码应该可以在 IE6 以及所有现代浏览器中工作,以防止默认操作而不停止传播。

但是,如果您不必:

if (e.preventDefault) {
    e.preventDefault();
} else {
    e.returnValue = false;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM