7

次のコードは、ブラウザウィンドウのクローズイベントを識別するために使用しています。IE11ではなく、他のブラウザでも使用できます。このコード行は、IE11 alert(event.clientY+":"+event.clientX);にのみ私にundefinedを与えます。誰でもこの問題の解決策を提案してください。IE 11でマウスイベントのプロパティが定義されていません

event = window.event || event; 

が、参照は、ここで使用されていません:

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

可能な重複はIE8で動作しません<!DOCTYPE html>](http://stackoverflow.com/questions/20272820/pagex-pagey-not-working-in-ie8-if-i-add-doctype-html) –

+0

いいえ、私の質問はIE 11用ですIE8用ではありません –

+0

...カーソルが画面の中央にあり、Alt + F4を押すとどうなりますか? –

答えて

0

投稿者:MDNイベントオブジェクトからサポートされているプロパティが表示されます。

イベントオブジェクトのclientXとclientYはサポートされていないため、未定義です。

onbeforeunloadイベントがそのような情報(位置XとY)を含んでいないので、これはChromeとFFでも起こる

IはIE11、クロム48でコードをテストし、FF 44は

可能な回避策ことcoud:私が追加した場合、[pageX pageYの

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

1

イベントオブジェクトが二度定義されて

if(window.event.clientX < 0 || window.event.clientY < 0) 

ので、IEは失敗したコードがあるべきため:

if(event.clientX < 0 || event.clientY < 0) 
+0

いいえ!アラート(event.clientY + ":" + event.clientX);私は未定義です。私の質問で誤字を指摘していただきありがとうございます。私は今編集しましたが、あなたの答えは何も解決しません。 –

+0

@ psyLogic gaemafは質問のbeforeUnload部分に答えました。 –

関連する問題