Ich versuche, ein Popup (Bootstrap-modalen Stil) zu implementieren, die ausgelöst werden würde, wie Web-Besucher meine Website verlässt.EventListener für beforeunload entfernen
Ich habe versucht, verschiedene Alternativen:
$(window).bind('beforeunload', function(){
$("#sModal").modal('show');
return 'Take our survey before you leave.';
});
Es ist jedoch nicht im IE in FF während gearbeitet funktionierten. Ich hatte auch ein anderes Problem, dass die Warnung "Möchten Sie gehen oder bleiben" bei jedem Link angezeigt wurde, klicken Sie auf meine Website selbst, über alle Browsertypen, als die ganze Seite geladen wurde.
Ich habe um diese durch durch alle meine Anker-Tags Looping und das Hinzufügen eines Klick-Listener mit dem beforeunload Zuhörer zu entfernen:
window.onload = function() {
var allLinks = document.getElementsByTagName('a');
for (var i = 0; i < allLinks.length; i++) {
allLinks[i].addEventListener("click", removeBeforeUnload, false);
}
};
Die removeBeforeUnload Funktion verwendet nur die
$(window).unbind('beforeunload');
zu Kommen wir zurück tatsächlich das Popup/Modal auf allen Browsern angezeigt, ich habe den Code aus dieser Stackoverflow-Antwort verwendet, nachdem mein Dokument Laden abgeschlossen:
window.onbeforeunload and window.onunload is not working in Firefox , Safari , Opera?
Diese Lösung funktioniert in allen Browsern hervorragend, aber jetzt kann ich dieses Ereignis nicht mehr auf einem meiner lokalen geklickten Links lösen! Ich habe alles versucht
window.removeEventlistener('beforeunload',null,false);
window.removeEventlistener('onbeforeunload',null,false);
window.removeBeforeUnload();
window.onbeforeunload = null;
Ich hoffe, dass Sie mich in die richtige Richtung zeigen kann und erklären, warum ich dieses Ereignis nicht lösen kann, dass ich von Stackoverflow answer.thanks verwendet!
So viel wie ich hasse dich Entladeverzeichnis Ereignis modal für die Verwendung, das ist eine gute Frage weil ich das gleiche Problem hatte, das nahe Ereignis in einem Browser zu erfassen, ohne die Aktualisierung, zurück usw. zu erfassen. –
@SterlingArcher Thanks! Ich hoffe, dass ich das lösen kann, weil ich auf dem Schreibtisch stehe! Ich weiß nicht, warum die Ereignis-Listener nicht abgemeldet werden !? – mmokh
Ich würde vorschlagen, entweder mit jQuery-Stil 'bind/unbind' (eigentlich sollte diese' on/off' in neueren Versionen von jQuery sein), oder einfach DOM-Stil 'addEventListener/removeEventListener' Semantik. Die Kombination führt zum Wahnsinn :). –