2013-04-02 13 views
13

Penceremi kapatmak için bu işlevi kullanıyorum.window.onclose işlevi

Bu onay kutusu açılır penceredir. X sembolü ile sağ üst köşede bulunan pencerenin Kapat günü

if(confirm("Sure you want to close the window"); 
{ 
    // yes return to submit function 
} 
else 
{ 
    // no return to Other call function 
} 

window.onclose = function() 
{ 
    alert('yes'); 
} 

Ben return false gerekir. Bu window.onclose işlevini kullanmaya çalışıyorum ama açılmıyor.

Herkes bana yardım edebilir mi?

+1

Yan Not: Burada kodudur Kullanım [ 'console.log()'] (http://stackoverflow.com/questions/4743730/what-is-console-log-and-how-do -i-use-it) yerine 'alert() '. – Dom

+1

Dom, Pencereyi (veya sekmesi) kapattığında, tarayıcıyı (benim durumumdaki Firefox) konsolu kapatmak için nasıl önlersiniz? Eğer konsol pencereyle birlikte kapalı olduğu için konsolu görmüyorsanız, konsol.log kullanışsızdır, ... :-( – Peter

+0

Peter, bunun biraz eski olduğunu ve farklı bir "Dom" olduğunu biliyorum, ama Bu konsolun konsolunda bir "koruma günlüğü" onay kutusunun olduğunu biliyorum .. Firefox veya firebug da aynı olabilir mi? –

cevap

24

Bugünün tarayıcılarıyla yakalayabileceğiniz "yakın" bir etkinlik yok.

bir onbeforeunload yoktur ama çağrıldığında Eğer çok yapamaz sen ediliyor sayfasından bunları denerseniz özellikle başarısız olur kullanıcı izni ve en uzak operasyonlar olmadan pencere kapatmayı önleyemez kapalı.

var w = window.open('popup.html'); 
w.onbeforeunload = function(){ 
     // set warning message 
}; 

ÖNEMLİ: bir pop-up penceresi için

, sen ancak açıcı penceresinde, kapanış etkinliği almak ve uzun işlemleri yapabilirsiniz krom son sürümlerinde, onbeforeunload sadece yapmanızı sağlar uyarı mesajını ayarla; Ekstra mantık koşmayabilirsiniz.

+0

Pencereyi kapatmayı durdurabilirsiniz, ancak sadece kullanıcı müdahalesi ile kullanıyorum. Sayfayı ayrılmadan veya kapatmadan önce kaydedilmemiş değişiklikleriniz varsa. "dönüş" Kaydedilmemiş değişiklikleriniz var. "; – Archer

+1

@Archer, yanıtım çok kısaldı. Daha net hale getirmek için düzenledim. –

32

Ne yazık ki açılır pencerede dinleyebileceğiniz hiç bir yakın etkinlik bulunmamaktadır, ancak pencere kapatıldığında doğru olan kapalı bir özellik yoktur. Bu sorunu çözmek için bir çözüm bir zamanlayıcıyı başlatmak ve her saniye alt pencerenin kapalı özelliğini kontrol etmek ve pencere kapatıldığında zamanlayıcıyı temizlemektir.

var win = window.open('http://www.google.com','google','width=800,height=600,status=0,toolbar=0'); 
var timer = setInterval(function() { 
    if(win.closed) { 
     clearInterval(timer); 
     alert('closed'); 
    } 
}, 1000);