9

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

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

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

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

ответ

8

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

var hasMutationEvents = ("MutationEvent" in window); 

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

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

+0

Да, это выглядит хорошим фильтром первого прохода. +1 –

2

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

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

+0

Я забираю его обратно. Эта страница не предоставляет никакой полезности для мутации-события, обнаружения функции. Я думал, что все будет в порядке, потому что оно ссылается на * другую * страницу, которая делает. Однако код на второй странице не очень перекрестный браузер, а также делает предположения о будущих наборах функций IE. –

4

Этот вопрос довольно старый, но в случае, если кто-то в другом натыкается на него, решение для обнаружения мутаций событий объясняется в этом ответе: How to check browser support for capabilities/events?

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

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

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

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