Альтернатива PreventDefault для IE8 - PullRequest
11 голосов
/ 12 декабря 2010

Ситуация : Попытка изменить VideoJS.com для работы с IE8 и Youtube Chromeless API.

Проблема : перетаскивание по панели прогресса не работает (ошибкаon event.preventDefault (); 'не поддерживается' в соответствии с отладкой)

Демо : http://alpha.dealertouch.mobi/video/demo.html

Что я пробовал : пропустить "protectDefault ', когда это IE, но если я сделаю это, я потеряю функциональность индикатора выполнения (перетащите / щелкните вперед и назад)

Вопрос : Каков наилучший способ решить эту проблему?проблема для IE8?

Ответы [ 4 ]

29 голосов
/ 09 декабря 2011

Я использую что-то вроде:

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

свойство event.returnValue является ближайшим IE, эквивалентным preventDefault.

Использование

return false;

может иногдатакже работает, но это может привести к неожиданному поведению, иногда при смешивании, например, с jQuery (jQuery также делает stopPropagation ... что обычно то, что вы хотите, но ...), поэтому я предпочитаю не делать этогоположитесь на него.

5 голосов
/ 12 декабря 2010

IE8 не поддерживает preventDefault; вместо этого returnValue. JQuery должен нормализовать это для вас, хотя. Вы уверены, что вызываете preventDefault в оболочке события jQuery (а не в самом объекте события)?

1 голос
/ 31 мая 2011

Просто используйте

return false;

это кросс-браузер и имеет ту же цель, что и event.preventDefault ();

Эта же инструкция в jQuery немного отличается, она также включает stopPropagation ().

0 голосов
/ 20 января 2011

Использование

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

jquery docs

...