Обнаружение функции: доступность события мутации в JavaScript?

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

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

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

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


person Brock Adams    schedule 03.02.2011    source источник


Ответы (3)


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

var hasMutationEvents = ("MutationEvent" in window);

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

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

person gregers    schedule 21.03.2012

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

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

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

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

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

person Robin Winslow    schedule 05.06.2011

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

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

person takteek    schedule 03.02.2011