utilizzando jQuery si può fare uso data("events")
su qualsiasi oggetto (qui la finestra):
var hasbeforeunload = $(window).data("events") && $(window).data("events").['beforeunload'];
Ma questo funziona solo per gli eventi jQuery aggiunto.
In un caso più generale, si dovrebbe semplicemente memorizzare le informazioni che si aggiunge un ascoltatore da qualche parte:
var addedListeners = {};
function addWindowListenerIfNone(eventType, fun) {
if (addedListeners[eventType]) return;
addedListeners[eventType] = fun;
window.addEventListener(eventType, fun);
}
penso che ci sia alcun modo standard in javascript per ottenere i gestori di eventi esistenti. Nella migliore delle ipotesi si potrebbe sovrapprezzo la funzione addEventListener del Nodo di intercettare e memorizzare gli ascoltatori, ma io non lo consiglio ...
EDIT:
Da jQuery 1.8, i dati dell'evento sono disponibili nella $._data(element, "events")
. Il registro delle modifiche contiene un avviso che dovrebbe essere preso in considerazione:
Si noti che questa non è un'interfaccia pubblica supportata; le strutture effettive dei dati possono cambiare in modo incompatibile da versione a versione.
fonte
2012-07-11 10:32:13
+1 per la pianura javascript, ma si potrebbe fare cross browser (attachEvent). –
Forse. Questo dovrebbe essere fatto [come spiegato dal MDN] (https://developer.mozilla.org/en/DOM/element.addEventListener#Legacy_Internet_Explorer_and_attachEvent) –
Grazie per il tentativo con jQuery, tuttavia ho bisogno di Javascript nativo, mi dispiace per non menzionare . Comunque andrò con il tuo tentativo di bandiera. Aspetterò ulteriori risposte e, se non migliore, sceglierò il tuo. – Patrick