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

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

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

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

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

3 ответов


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

var hasMutationEvents = ("MutationEvent" in window);

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

для запуска теста browserscope в другом браузере перейдите сюда: http://jsbin.com/aqeton/4/


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

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

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

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

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


Я посмотрел вокруг на Google немного. Это похоже на то, что вы, вероятно, хотите:

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