Domanda

Come può il mio JavaScript rilevare se è disponibile un evento?

Sono a conoscenza di un grande grande Tabelle di compatibilità degli eventi, ma devo utilizzare il rilevamento delle funzionalità, non il browser-sniffing più una tabella di ricerca.

In particolare, il mio JS fa un grande uso degli eventi di mutazione DOM (DOMNodeInserted e DOMSubtreeModified) - che funziona alla grande in tutti i browser tranne (ovviamente) Internet Explorer.

Quindi, come dovrei rilevare se un browser supporta DOMNodeInserted?

È stato utile?

Soluzione

Se vuoi solo verificare se il browser supporta gli eventi di mutazione in generale, puoi utilizzare questo semplice test:

var hasMutationEvents = ("MutationEvent" in window);

Ecco i risultati di un mucchio di browser popolari:http://www.browserscope.org/browse?category=usertest_agt1ys1wcm9mawxlcnincxievgvzdbjeknapda

Per eseguire il test browsercope in un altro browser, vai qui:http://jsbin.com/aqeton/4/

Altri suggerimenti

Questa domanda è piuttosto vecchia, ma nel caso in cui qualcun altro inciampino, una soluzione per rilevare eventi di mutazione è spiegata in questa risposta:Come controllare il supporto del browser per funzionalità / eventi?

Da quella risposta:

Non puoi rilevare eventi di mutazione e Modernizr non funziona per questo ...

L'unico modo per "rilevare" il supporto per gli eventi di mutazione è cercare di innescare l'evento.

Per eventi normali, utilizzare l'articolo della perfezione nella risposta di Takteek. Questo non sembra ancora supportare annusando alcuni nuovi eventi HTML5, come "input".

Mi sono guardato intorno su Google un po '. Sembra che sia probabilmente quello che vuoi:

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top