问题
Situation: Trying to modify VideoJS.com in order to work with IE8 and Youtube Chromeless API.
Problem: Progressbar dragging doesn't work (error on event.preventDefault(); 'not supported' according to debug)
Demo: http://alpha.dealertouch.mobi/video/demo.html
What I tried: Skip 'preventDefault' when it's IE, but if I do that I'll lose the functionality of the progressbar (drag/click forward and backward)
Question: What is the best way to solve this problem for IE8?
回答1:
I use something like:
(event.preventDefault) ? event.preventDefault() : event.returnValue = false;
the event.returnValue
property is the closest IE equivalent to preventDefault
.
Using
return false;
can sometimes also work, but it can lead to unexpected behavior sometimes when mixed with e.g. jQuery (jQuery also does stopPropagation
...which is usually what you want, but...), so I prefer not to rely on it.
回答2:
IE8 does not support preventDefault
; it has returnValue
instead. jQuery should normalize that for you, though. Are you sure you are calling preventDefault
on the jQuery event wrapper (and not the actual event object)?
回答3:
Just use
return false;
it's cross browser and has the same purpose as event.preventDefault();
THe same instruction in jQuery is slightly different, it includes also stopPropagation().
回答4:
Use
$('.selector').click(function(event) {event.preventDefault();
jquery docs
来源:https://stackoverflow.com/questions/4422045/preventdefault-alternative-for-ie8