Search code examples
javascriptdebuggingwindowinternet-explorer-11eventhandler

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

Solution

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