9

Làm cách nào để JavaScript của tôi có thể phát hiện nếu sự kiện có sẵn?Tính năng phát hiện: tính khả dụng của sự kiện đột biến trong JavaScript?

Tôi biết về một số tuyệt vời event-compatibility tables, nhưng tôi cần phải sử dụng tính năng phát hiện, không phải trình duyệt-sniffing cộng với một bảng tra cứu.

Cụ thể, JS của tôi sử dụng tuyệt vời các sự kiện đột biến DOM (DOMNodeInsertedDOMSubtreeModified) - hoạt động tốt trong tất cả các trình duyệt ngoại trừ (tất nhiên) Internet Explorer.

Vì vậy, làm cách nào để phát hiện xem trình duyệt có hỗ trợ DOMNodeInserted không?

Trả lời

8

Nếu bạn chỉ muốn kiểm tra nếu trình duyệt hỗ trợ các sự kiện đột biến nói chung, bạn có thể sử dụng thử nghiệm đơn giản này:

var hasMutationEvents = ("MutationEvent" in window); 

Đây là kết quả từ một loạt các trình duyệt phổ biến: http://www.browserscope.org/browse?category=usertest_agt1YS1wcm9maWxlcnINCxIEVGVzdBjEkNAPDA

Để chạy kiểm tra trình duyệt trong một trình duyệt khác, hãy truy cập vào đây: http://jsbin.com/aqeton/4/

+0

Vâng, đó có vẻ là một bộ lọc tốt, thông qua đầu tiên. +1 –

2

Tôi đã xem xét trên google một chút. Đây có vẻ như nó có thể là những gì bạn muốn:

http://perfectionkills.com/detecting-event-support-without-browser-sniffing/

+0

Tôi lấy lại. Trang đó không cung cấp bất kỳ tiện ích nào cho sự kiện đột biến, phát hiện tính năng. Tôi nghĩ rằng nó sẽ không sao vì nó purports để liên kết đến * một trang * khác. Tuy nhiên, mã ở trang thứ hai không phải là rất nhiều trình duyệt và cũng đưa ra giả định về các bộ tính năng trong tương lai của IE. –

4

Câu hỏi này là khá cũ, nhưng trong trường hợp bất cứ ai tình cờ khác khi đó, một giải pháp cho việc phát hiện các sự kiện đột biến được giải thích trong câu trả lời này: How to check browser support for capabilities/events?

Từ câu trả lời rằng:

Bạn không thể phát hiện các sự kiện đột biến, và Modernizr không làm việc cho này ...

Cách duy nhất để "phát hiện" hỗ trợ cho các sự kiện đột biến là thử và kích hoạt sự kiện.

Đối với các sự kiện bình thường, hãy sử dụng bài viết perfectionkills trong câu trả lời của takteek. Điều này vẫn không có vẻ hỗ trợ đánh hơi một số sự kiện HTML5 mới, như "đầu vào".

Các vấn đề liên quan