2010-12-12 20 views
11

Sytuacja: Stara się zmodyfikować VideoJS.com w celu pracy z IE8 i Chromeless API Youtube.Opcja PreventDefault dla IE8

Problem: Progressbar przeciąganie nie działa (błąd na event.preventDefault(); 'nie jest obsługiwany' stosownie do debugowania)

Demo: http://alpha.dealertouch.mobi/video/demo.html

Co próbowałem: Pomiń "preventDefault", gdy jest to IE, ale jeśli to zrobię, stracę funkcjonalność paska postępu (przeciągnij/kliknij do przodu i do tyłu)

Pytanie: Jaki jest najlepszy sposób na rozwiązanie tego problemu w IE8?

Odpowiedz

5

IE8 nie obsługuje preventDefault; zamiast tego ma numer returnValue. jQuery powinien jednak to normalizować. Czy na pewno dzwonisz pod numer preventDefault w opakowaniu zdarzenia jQuery (a nie w rzeczywistym obiekcie zdarzenia)?

-1

Zastosowanie

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

jquery docs

+0

Jak stwierdzono w pytaniu, które jest nawet zatytułowane "PreventDefault alternatywa dla IE8", to nie działa w IE8. – Purrell

+0

@Purrell to było stare pytanie, które zostało zmienione od czasu mojej odpowiedzi, dziękuję za twoją opinię ... –

1

Wystarczy użyć

return false; 

to krzyż przeglądarka i ma taki sam cel jak event.preventDefault();

Ta sama instrukcja w jQuery jest nieco inna, zawiera również stopPropagation().

+0

Zobacz http://stackoverflow.com/questions/1357118/event-preventdefault-vs-return-false w celu zastrzeżenia tego podejście. – Bungle

29

używam coś takiego:

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

własnością event.returnValue jest najbliżej IE równoważne preventDefault.

Stosując

return false; 

czasami również pracować, ale to może doprowadzić do nieoczekiwanego zachowania czasami zmieszana z np jQuery (jQuery ma także stopPropagation ... czyli zwykle czego chcesz, ale ...), więc wolę nie polegać na tym.