[英]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.