Обнаружение функции: наличие события мутации в JavaScript? - PullRequest
8 голосов
/ 03 февраля 2011

Как мой JavaScript может определить, доступно ли событие?

Я знаю о некоторых замечательных таблицах совместимости событий , но мне нужно использовать обнаружение функций, а не анализатор браузера и таблицу поиска.

В частности, мой JS широко использует события мутации DOM (DOMNodeInserted и DOMSubtreeModified), которые прекрасно работают во всех браузерах, кроме (конечно) Internet Explorer.

Итак, как мне определить, поддерживает ли браузер DOMNodeInserted?

Ответы [ 3 ]

8 голосов
/ 22 марта 2012

Если вы просто хотите проверить, поддерживает ли браузер события мутации в целом, вы можете использовать этот простой тест:

var hasMutationEvents = ("MutationEvent" in window);

Вот результаты нескольких популярных браузеров: http://www.browserscope.org/browse?category=usertest_agt1YS1wcm9maWxlcnINCxIEVGVzdBjEkNAPDA

Чтобы запустить тест браузера в другом браузере, перейдите по ссылке: http://jsbin.com/aqeton/4/

4 голосов
/ 06 июня 2011

Этот вопрос довольно старый, но в случае, если кто-то еще наткнется на него, решение для обнаружения событий мутации объясняется в этом ответе: Как проверить поддержку браузера для возможностей / событий?

Из этого ответа:

Вы не можете обнаружить мутационные события, и Modernizr не работает для этого ...

Единственный способ «обнаружить» поддержку мутациисобытия - попытаться вызвать событие.

Для обычных событий используйте статью perfectionkills в ответе takteek.Это все еще не поддерживает анализ некоторых новых событий HTML5, таких как «ввод».

2 голосов
/ 03 февраля 2011

Я немного посмотрел на Google. Похоже, это то, что вы хотите:

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

...