Vibhesh Kaul
Vibhesh Kaul

Reputation: 2613

Mouse Event Properties are Undefined on IE 11

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();
    }
};

Upvotes: 7

Views: 5606

Answers (2)

gaetanoM
gaetanoM

Reputation: 42054

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();
  }
};

Upvotes: 1

Paul Sweatte
Paul Sweatte

Reputation: 24637

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)

Upvotes: 1

Related Questions