2012-08-29 18 views
10

Bu kod Firefox, 'da sorunsuz çalışıyor ancak boşaltma olayını Chrome üzerinde artık çalıştıramıyorum. Chrome, kaldırma etkinliğini desteklemeyi mi bıraktı?Chrome'da boşaltma olayını tetikleyemiyorum

Bu benim kodudur:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title></title> 

<script type="text/javascript" src="../jquery/jquery.js"></script> 

<script type="text/javascript"> 

    function pageHidden(evt) { alert("Are you sure 1?"); } //WORKS ON FIREFOX BUT NOT IN CHROME 
    window.addEventListener("pagehide", pageHidden, false); 

    window.onunload = function() { alert("Are you sure 2?"); } //TRIGGERS ON LOAD NOT ON UNLOAD 

    $(window).unload(function() { //WORKS ON FIREFOX BUT NOT IN CHROME 
     alert("Are you sure 3?"); 
    }); 

</script> 
</head> 

<body> 
TEST WEBSITE 
<a href="http://www.iamawesome.com">external link</a> 
</body> 
</html> 
Chrome'da çalışmaya boşaltma olayı nasıl alabilirim

?

Teşekkürler!


CEVAP: uyarılarla boşaltma olayı test etmeyin;)

+1

Olası dupe: http://stackoverflow.com/questions/803887/can-i-pop-up-a-confirmation-dialog-when-the-user-is-closing-the-window-in-safari –

+0

Kodunuzda herhangi bir şeyi tetiklemiyorsunuz. sadece bağlayıcıları kullanıyorsun. – jbabey

+0

[Bu hata raporu] 'nu kontrol edin (http://bugs.jquery.com/ticket/10509). Kısacası, Chrome'da çalışmayacak; yerine '.onunload 'işleyicisini kullanmayı deneyin, ancak bu' sabit 'de olabilir.) – raina77ow

cevap

14
window.onunload = alert("Are you sure 2?"); 

Bu yanlıştır. Sen alert sonucuna onunload ayarlarken, bir işlevin ayarlanması gerekir: jQuery kullanmak istiyorsanız

window.onunload = function(){ 
    alert("Are you sure?"); 
} 

, bu tüm tarayıcılarda çalışır.

$(window).unload(function() { 
    alert("Are you sure?"); 
}); 

NOT: böyle Chrome'da çalışmıyor görünebilir, ama öyle. Çünkü Chrome, onunload etkinliğinde alert s'yi engeller.

+1

Sorun buydu.Tüm uyarılarımı engelleyen Chrome, bir konsol.log çalıştı ve iyi çalışıyor. ! –

+0

Rica ederim :-) –

+2

Uyarıları kullanırsanız, Chrome konsolunda bir hata görmelisiniz. –

2

Dene:

window.onbeforeunload = function() { 
    // code 
}; 

veya

window.onpagehide = function() { 
    // code 
}; 
+0

Teşekkürler Korikulum! Bunu denedim ama her fonksiyonun içinde yazdığım uyarı mesajını görüntülemiyor –

+0

onpagehide, bilmeniz gereken yararlı bir olaydır, ancak bir sayfa gittiğinde her seferinde buna güvenemezsiniz.Örneğin, yeni bir sekme başlatırsanız ve ardından tüm tarayıcıyı kapatırsanız etkinlik tetiklenmeyebilir. –

1

Hiçbir şey tetiklemez - sadece eklemek istediğiniz ifadeyi yürütürsünüz işleyici olarak:

window.onunload = function(event) { 
    alert("Are you sure 2?"); 
}; 
+0

Hala çalışmıyor, sayfasından çıkabiliyorum ve uyarı mesajı görünmeyecek :( –

1

Okuduğum şeyden, olay tetiklendikten sonra Chrome engellemeleri uyarılıyor. Ancak, bazı işlevleri çalıştırabilirsiniz, ancak göründüğü kullanıcıyla etkileşimde olan hiçbir şey yoktur.

window.onbeforeunload in Chrome: what is the most recent fix?'dan itibaren, tek yapmanız gereken bir onaylama mesajı açmaksa, geri çağırma olarak ayarladığınız işlevin bir iletisini döndürerek yapmanız gerekir.

window.onbeforeunload = function() { 
    // Some wrap up code (no alerts, confirms, redirects, etc) 
    return 'My confirmation messsage'; 
} 

"Onay mesajım" metni, daha sonra Chrome'un seçtiği bir onay iletişiminde gösterilecek. Firefox bu davranışı here belgelemektedir.

+0

Bana bu işe yaradı ve benim şu anki tasarımımla iyi işlediğin için teşekkür ederim – Callat

İlgili konular