2009-04-23 40 views

Trả lời

13

Bạn không thể trực tiếp được thông báo về việc đóng cửa sổ, nhưng bạn có thể làm việc khi cửa sổ con bị đóng bằng cách kiểm tra thuộc tính closed trên tham chiếu đối tượng cửa sổ được trả về window.open().

Dưới đây là một ví dụ mà sẽ hiển thị một cảnh báo trong vòng 5 giây của cửa sổ con được đóng bằng cách bỏ phiếu các closed tài sản:

var win = open('http://www.google.com'); 
var intervalId = setInterval(function() { 
     if (win.closed) { 
      clearInterval(intervalId); 
      alert('Window closed! Hoorah!'); 
     } 
    }, 5000); 
+0

Bạn không thể được thông báo trực tiếp vì cửa sổ con nằm trong một miền riêng biệt, đúng không? – Adam

+0

Đó là vì không có sự kiện trình duyệt phù hợp mà bạn có thể sử dụng để làm việc khi cửa sổ đóng. –

+0

Woow..great man..worked like a charm. Cảm ơn rất nhiều – BKM

-1

Một giải pháp tốt hơn với hai đoạn mã 1/trong popup:

$(window).bind('unload', 
    function(){ 
    window.opener.PopupUnload(window) 
    }) 

2/trong các phụ huynh (cửa sổ chính):

function PopupUnload(wnd){ 
setTimeout(function(){ // setTimeout is for IE 
    if(wnd.closed) 
    alert('You just killed me...') 
    },10) 
} 

với mã này, không có chức năng gọi là mãi mãi (với setInterval()) và bạn thực hiện sự khác biệt giữa thân thiết và làm mới cửa sổ bật lên (bài/get)

(thử nghiệm trong IE8 và FF3)

+1

Cuộc gọi 'window.opener.PopupUnload' của bạn sẽ thất bại nếu cửa sổ bật lên của bố mẹ và cửa sổ bật lên khác nhau tên miền do giới hạn tập lệnh trên trang web. –

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