9

In che modo il mio JavaScript può rilevare se un evento è disponibile?Rilevamento di funzionalità: disponibilità di eventi di mutazione in JavaScript?

Sono a conoscenza di alcuni ottimi event-compatibility tables, ma ho bisogno di utilizzare il rilevamento delle funzioni, non lo sniffing del browser più una tabella di ricerca.

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

Quindi, come posso rilevare se un browser supporta DOMNodeInserted?

risposta

8

Se si desidera solo per verificare se il browser supporta eventi di mutazione, in generale, è possibile utilizzare questo semplice test:

var hasMutationEvents = ("MutationEvent" in window); 

Ecco i risultati di una serie di browser più diffusi: http://www.browserscope.org/browse?category=usertest_agt1YS1wcm9maWxlcnINCxIEVGVzdBjEkNAPDA

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

+0

Sì, sembra un buon filtro di primo passaggio. +1 –

2

Mi sono guardato un po 'su google. Questo appare come probabilmente è ciò che si vuole:

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

+0

Io riprendo. Quella pagina non fornisce alcuna utilità per eventi di mutazione, rilevamento di funzionalità. Ho pensato che sarebbe andato bene perché pretende di collegarsi a * un'altra * pagina che fa. Tuttavia, il codice nella seconda pagina non è molto cross-browser e fa anche supposizioni sui futuri set di funzionalità di IE. –

4

Questa domanda è abbastanza vecchio, ma nel caso qualcuno altro inciampa su di essa, una soluzione per rilevare eventi di mutazione è spiegato in questa risposta: How to check browser support for capabilities/events?

Da questa risposta:

non si può rilevare eventi di mutazione, e Modernizr non funziona per questo ...

L'unico modo per "rilevare" il supporto per gli eventi di mutazione è provare ad attivare l'evento.

Per gli eventi normali, utilizzare l'articolo perfectionkills nella risposta di takteek. Questo non sembra ancora supportare lo sniffing di alcuni nuovi eventi HTML5, come "input".

Problemi correlati