2010-12-12 23 views
11

Tình huống: Cố gắng sửa đổi VideoJS.com để làm việc với IE8 và Youtube Chromeless API.PreventDefault alternative cho IE8

Vấn đề: ProgressBar kéo không hoạt động (lỗi trên event.preventDefault(); 'không được hỗ trợ' theo debug)

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

Những gì tôi cố gắng: Bỏ qua 'preventDefault' khi đó là IE, nhưng nếu tôi làm như vậy, tôi sẽ mất chức năng của thanh tiến trình (kéo/bấm tiến và lùi)

Câu hỏi: Cách tốt nhất để giải quyết vấn đề này cho IE8 là gì?

Trả lời

5

IE8 không hỗ trợ preventDefault; nó có returnValue thay thế. Tuy nhiên, jQuery nên bình thường hóa cho bạn. Bạn có chắc chắn đang gọi preventDefault trên trình bao bọc sự kiện jQuery (và không phải là đối tượng sự kiện thực tế) không?

-1

Sử dụng

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

jquery docs

+0

Như đã nêu trong câu hỏi, thậm chí còn có tiêu đề "PreventDefault alternative for IE8" này không hoạt động trong IE8. – Purrell

+0

@Purrell đây là một câu hỏi cũ đã được chỉnh sửa từ câu trả lời của tôi, cảm ơn ý kiến ​​của bạn ... –

1

Chỉ cần sử dụng

return false; 

đó là trình duyệt chéo và có cùng một mục đích như event.preventDefault();

Lệnh tương tự trong jQuery hơi khác một chút, nó cũng bao gồm stopPropagation().

+0

Xem http://stackoverflow.com/questions/1357118/event-preventdefault-vs-return-false để báo trước điều này tiếp cận. – Bungle

29

tôi sử dụng một cái gì đó như:

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

các event.returnValue tài sản là IE tương đương gần preventDefault.

Sử dụng

return false; 

có thể đôi khi cũng làm việc, nhưng nó có thể dẫn đến hành vi bất ngờ đôi khi trộn với ví dụ jQuery (jQuery cũng có stopPropagation ... là thường là những gì bạn muốn, nhưng ...), vì vậy tôi không muốn dựa vào nó.