2010-12-18 141 views
10

互联网浏览器不支持JavaScript中的e.preventDefault。如果不是什么原因,有什么选择。请不要提示任何jQuery,mootools的答案。互联网浏览器支持e.preventDefault

if (!e) e = window.event;

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

+2

可能重复在IE中不工作。任何帮助?](http://stackoverflow.com/questions/1000597/event-preventdefault-function-not-working-in-ie-any-help)(有趣的是,这是第一次打时,搜索事件preventdefault在即'' – 2010-12-18 17:41:18

+1

@Felix我更倾向于为什么它不工作,如果它以某种方式与IE事件模型相关。此外链接谈论更多关于mootools和jQuery,我没有干扰。 – 2010-12-18 17:43:50

+0

但接受的答案不是框架特定的。 – 2010-12-18 17:55:11

回答

14

好吧,如果你坚持:

event.preventDefault不起作用,因为它不存在IE。

为什么它不存在,人们将不得不为MS工作。但总的来说,IE并不总是符合标准。

documentation说,你可以设置event.returnValue

false
源对象上事件的默认动作被取消。

,并进一步:

备注

此属性的值接管该函数返回值,如通过Microsoft JScript中return语句的优先级。

标准信息

没有公共的标准,适用于该属性。 [event.preventDefault()函数的

preventDefault seems to be supported in IE9.

+1

我使用IE 7和event.returnValue = false;也似乎没有工作。添加我的代码上面看看你是否可以指出一些东西。 – 2010-12-18 18:05:41

+1

@sushil bharwani:你必须做'if(e.preventDefault)'(没有括号)。你不想调用这个函数,你想测试它是否被定义。 – 2010-12-18 18:11:23

+0

哦,我的坏。你真是太棒了!谢谢 – 2010-12-18 18:12:39

-5

它不支持它,因为有人在微软决定等等。

另一种是event.cancelBubble

+1

取消冒泡防止默认操作? – 2010-12-18 17:52:54

+2

我不认为event.cancelBubble被替换为event.preventDefault ...它可以用于e.stopPropogation。 – 2010-12-18 17:53:42