Jak wykryć okno przeglądarki / zdarzenie zamknięcia karty?
Próbuję za pomocą funkcji onbeforeunload i Unload. Ale to nie zadziałało. Po kliknięciu łącza lub odświeżeniu to zdarzenie zostało uruchomione. Chcę wydarzenie, które jest uruchamiane tylko wtedy, gdy okno przeglądarki lub karta jest zamknięta. Kod musi działać we wszystkich przeglądarkach.
Używam następującego kodu w Masterpage.
<script type="text/jscript">
var leaving = true;
var isClose = false;
function EndChatSession() {
var request = GetRequest();
request.open("GET", "../Chat.aspx", true);
request.send();
}
document.onkeydown = checkKeycode
function checkKeycode(e) {
var keycode;
if (window.event)
keycode = window.event.keyCode;
else if (e)
keycode = e.which;
if (keycode == 116) {
isClose = true;
}
}
function somefunction() {
isClose = true;
}
window.onbeforeunload = function (e) {
if (!e) e = event;
if (leaving) {
EndChatSession();
e.returnValue = "Are You Sure";
}
}
function GetRequest() {
var xmlHttp = null;
try {
// Firefox, Opera 8.0+, Safari
xmlHttp = new XMLHttpRequest();
}
catch (e) {
//Internet Explorer
try {
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e) {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
}
return xmlHttp;
}
</script>
iw moim tagu ciała:
Powyższy kod działa w IE, ale nie w chromie ...