The following code I'm using to Identify the browser window close event and works as intended on other browsers but not on IE11. As this line of code gives me undefined
only on IE11 alert(event.clientY+":"+event.clientX);
.Can anyone please suggest a solution to this problem.
window.onbeforeunload = function(event)
{
event= window.event|| event;
alert(event);
alert(event.clientY+":"+event.clientX);
if(event.clientX <0 || event.clientY < 0)
{
// ajax call to server to nullify the session.
window.close();
}
};
From MDN beforeunload event you may see what properties are supported from event object.
The clientX and clientY of the event object are not supported so they are undefined.
This happens also in Chrome and FF because the onbeforeunload event does not contain such information (positional X and Y)
I tested your code in IE11, Chrome 48, FF 44.
A possible workaround coud be:
var clientX = 0;
var clientY = 0;
var scheduled = false;
window.onmousemove = function (event) {
if (!scheduled) {
scheduled = true;
setTimeout(function () {
event = event || window.event;
clientX = event.clientX;
clientY = event.clientY;
scheduled = false;
}, 1000);
}
}
window.onbeforeunload = function (event) {
alert(clientY+":"+clientX);
if (clientX < 0 || clientY < 0) {
// ajax call to server to nullify the session.
window.close();
}
};
The event object is defined twice:
event = window.event || event;
but the reference is not used here:
if(window.event.clientX < 0 || window.event.clientY < 0)
so IE fails because the code should be:
if(event.clientX < 0 || event.clientY < 0)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With