Supponiamo di voler rilevare il supporto per le notifiche (http://notifications.spec.whatwg.org/) in una libreria JavaScript.Qual è l'approccio più affidabile per rilevare il supporto delle funzionalità del browser?
Posso usare window.Notification !== undefined
. Ma cosa succede se gli utenti della libreria (o un'altra libreria) hanno anche una sorta di oggetto globale Notification
definito per scopi completamente diversi?
D'altra parte, cosa succede se l'altra libreria è un polyfill? Quindi il loro oggetto Notification
è accettabile. Devo testare tutti i metodi oltre a testare l'oggetto globale?
Aggiornamento:
Ho notato una cosa interessante in una notifications polyfill:
ret[toString] = function() {
return 'function Notification() { [native code] }';
};
Quanto è affidabile sta contando su una cosa del genere per rilevare se si tratta di un oggetto nativo/polyfill?
È necessario specificare chiaramente i requisiti ambientali per la libreria. Quindi non devi davvero preoccuparti di questo. Lascia che l'utente si assicuri che altre librerie collaborino. –
Sono d'accordo. Se l'utente è abbastanza pazzo da usare le librerie che inquinano lo spazio dei nomi globale, non c'è molto che tu possa fare, giusto? –
Questa è una buona risposta, ma solo se non ci sono altre opzioni. Mi piace salvare le persone da potenziali errori ogni volta che posso. –