Obecnie wykrywam, czy użytkownik mojej witryny zamyka okno/kartę lub zmienia adres URL.javascript na zdarzeniu zamykania okna
Używam follwoing kod, który działa perfekcyjnie:
var validNavigation = false;
function endSession() {
// Browser or broswer tab is closed
// Do sth here ...
alert("bye");
}
function wireUpEvents() {
window.onbeforeunload = function() {
if (!validNavigation) {
endSession();
}
}
// Attach the event keypress to exclude the F5 refresh
$(document).bind('keypress', function(e) {
if (e.keyCode == 116){
validNavigation = true;
}
});
// Attach the event click for all links in the page
$("a").bind("click", function() {
validNavigation = true;
});
// Attach the event submit for all forms in the page
$("form").bind("submit", function() {
validNavigation = true;
});
// Attach the event click for all inputs in the page
$("input[type=submit]").bind("click", function() {
validNavigation = true;
});
}
$(document).ready(function() {
wireUpEvents();
});
Mój problem to chciałbym zmienić zdarzenie z wpisem do nakładki. Mam konfiguracji aż ukryty div nakładkę i zastąpić alert w powyższym kodzie z:
$('.overlay').css('display','block');
To teraz już nie działa, jak nie ma nic w div, aby uzyskać użytkownika do pozostania na stronie. (użytkownik nie musi klikać przycisku w ramach alertu)
Jakieś sugestie, jak mogę to obejść?
Pozdrawiam, Dan
Dlaczego nie można po prostu użyć 'window.onbeforeunload'? Wiem, że to nie jest fantazyjny "div", ale zdecydowanie jest przeznaczony do tego rodzaju rzeczy. – Powerslave
window.onbeforeunload była opcją, ale teraz potrzebuję fantazyjnego div, który wymaga stylizacji. – danyo
Powielone na http://stackoverflow.com/questions/276660/how-can-i-override-the-onbeforeunload-dialog-and-replace-it-with-my-own/276739 –