2010-12-12 80 views
11

情況:試圖修改VideoJS.com以便使用IE8和Youtube Chromeless API。Prevent默認替代IE8

問題:進度條拖動不起作用(錯誤的event.preventDefault(); '不支持' 根據調試)

演示http://alpha.dealertouch.mobi/video/demo.html

我試過:當它是IE時跳過'preventDefault',但如果我這樣做,我將失去進度條的功能(拖拽/點擊前進和後退)

問題:解決IE8的這個問題的最好方法是什麼?

回答

5

IE8不支持preventDefault;它代之以returnValue。不過,jQuery應該爲你規範化。你確定你在jQuery事件包裝器(而不是實際的事件對象)上調用preventDefault

-1

使用

$('.selector').click(function(event) {event.preventDefault(); 

jquery docs

+0

正如問題中所述,甚至命名爲「PreventDefault替代IE8」,這在IE8中不起作用。 – Purrell 2011-09-28 06:17:46

+0

@Purrell這是一個古老的問題,自從我的答案後編輯,感謝您的意見... – 2011-09-28 08:37:37

1

只需使用

return false; 

它是跨瀏覽器,並具有相同的目的event.preventDefault();

在jQuery中的相同指令略有不同,它也包括stopPropagation()。

+0

請參閱http://stackoverflow.com/questions/1357118/event-preventdefault-vs-return-false對此的一個警告做法。 – Bungle 2014-01-20 21:46:39

29

我使用類似:

(event.preventDefault) ? event.preventDefault() : event.returnValue = false; 

event.returnValue屬性是相當於preventDefault最接近的IE瀏覽器。

使用

return false; 

有時也行,但與如混合有時可能會導致意外的行爲jQuery(jQuery也是stopPropagation ...這是通常是你想要什麼,但...),所以我不喜歡它。