2010-12-18 119 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