7

Mã sau tôi đang sử dụng để Xác định sự kiện đóng cửa sổ trình duyệt và hoạt động như dự định trên các trình duyệt khác nhưng không hoạt động trên IE11. Vì dòng mã này cung cấp cho tôi undefined chỉ trên IE11 alert(event.clientY+":"+event.clientX);. Có thể ai đề nghị giải pháp cho vấn đề này.Thuộc tính sự kiện chuột không được xác định trên 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

trùng lặp có thể xảy ra của [Trang X Trang Y không làm việc trong IE8 nếu tôi thêm ] (http://stackoverflow.com/questions/20272820/pagex-pagey-not-working-in-ie8-if-i-add-doctype-html) –

+0

Không, câu hỏi của tôi dành cho IE 11 và không phải cho IE8 –

+0

Vì vậy ... Điều gì sẽ xảy ra nếu con trỏ của tôi ở giữa màn hình và tôi nhấn Alt + F4? –

Trả lời

0

Từ MDN beforeunload event bạn có thể thấy những thuộc tính nào được hỗ trợ từ đối tượng sự kiện.

ClientX và clientY của đối tượng sự kiện không được hỗ trợ để chúng không được xác định.

này cũng xảy ra trong Chrome và FF vì sự kiện onbeforeunload không chứa thông tin đó (vị trí X và Y)

Tôi đã thử nghiệm mã của bạn trong IE11, Chrome 48, FF 44.

Sự chỉnh sửa có coud là:

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

Đối tượng sự kiện được định nghĩa hai lần:

event = window.event || event; 

nhưng tài liệu tham khảo không được sử dụng ở đây:

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

để IE không vì mã nên là:

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

Không! alert (event.clientY + ":" + event.clientX); đang cho tôi không xác định. Cảm ơn bạn đã chỉ ra lỗi đánh máy trong câu hỏi của tôi, tôi đã chỉnh sửa nó ngay bây giờ nhưng câu trả lời của bạn không giải quyết được gì. –

+0

@psyLogic gaemaf đã trả lời phần beforeUnload của câu hỏi. –

Các vấn đề liên quan