Альтернатива PreventDefault для IE8
Ситуация: попытка изменить VideoJS.com для работы с API-интерфейсом IE8 и Youtube Chromeless.
Проблема: перетаскивание прогона не работает (ошибка в событии .preventDefault(); "не поддерживается" в соответствии с отладкой)
Демо: http://alpha.dealertouch.mobi/video/demo.html
То, что я пробовал: пропустить 'preventDefault', когда он IE, но если я это сделаю, я потеряю функциональные возможности progressbar (перетащите/щелкните вперед и назад)
Вопрос. Каков наилучший способ решить эту проблему для IE8?
Ответы
Ответ 1
Я использую что-то вроде:
(event.preventDefault) ? event.preventDefault() : event.returnValue = false;
Свойство event.returnValue
является ближайшим IE, эквивалентным preventDefault
.
Использование
return false;
иногда также может работать, но это может привести к неожиданному поведению, иногда при смешивании с, например, jQuery (jQuery также делает stopPropagation
... который обычно, что вы хотите, но...), поэтому я предпочитаю не полагаться на него.
Ответ 2
IE8 не поддерживает preventDefault
; он имеет returnValue
. Однако jQuery должен нормализовать это для вас. Вы уверены, что вызываете preventDefault
в оболочке события jQuery (а не в объекте события)?
Ответ 3
Просто используйте
return false;
это перекрестный браузер и имеет ту же цель, что и event.preventDefault();
Та же самая инструкция в jQuery несколько отличается, она включает также stopPropagation().
Ответ 4
Использование
$('.selector').click(function(event) {event.preventDefault();
jquery docs