1

我需要代码才能在 IE6+ 上工作,只是想检查一下我没有错过对任何浏览器的支持。

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

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

1 回答 1

3

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;
}
于 2012-02-23T17:06:22.030 回答