7

Il seguente codice che sto utilizzando per identificare l'evento di chiusura della finestra del browser e funziona come previsto su altri browser ma non su IE11. Poiché questa riga di codice mi dà undefined solo su IE11 alert(event.clientY+":"+event.clientX);. Qualcuno può suggerire una soluzione a questo problema.Le proprietà dell'evento del mouse non sono definite su IE 11

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

Eventuali duplicati di [pageX pagey non funziona in IE8 se aggiungo ] (http://stackoverflow.com/questions/20272820/pagex-pagey-not-working-in-ie8-if-i-add-doctype-html) –

+0

No, la mia domanda è per IE 11 e non per IE8 –

+0

Quindi ... Cosa dovrebbe accadere se il mio cursore si trova nel mezzo dello schermo e premo Alt + F4? –

risposta

0

da MDN beforeunload event è possibile vedere quali proprietà sono supportate dall'oggetto evento.

Il clientX e il clientY dell'oggetto evento non sono supportati, pertanto non sono definiti.

Questo accade anche in Chrome e FF perché l'evento onbeforeunload non contiene tali informazioni (di posizione X e Y)

Ho provato il codice in IE11, Chrome 48, FF 44.

Una possibile soluzione coud essere:

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

L'oggetto evento viene definito due volte:

event = window.event || event; 

ma il riferimento non è utilizzata qui:

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

così IE riesce perché il codice dovrebbe essere:

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

No! alert (event.clientY + ":" + event.clientX); mi sta dando indefinito. Grazie per aver segnalato l'errore nella mia domanda, l'ho modificato ora ma la tua risposta non risolve nulla. –

+0

@psyLogic gaemaf ha risposto alla parte precedente della domanda. –

Problemi correlati