2013-05-13 22 views
5
<html> 
<body> 

<button type="button" onclick="clickme()">Click Me</button> 

<script> 
var test = 0; 

function clickme() { 
    test = 1; 
    console.log(test); 
} 

window.onunload = function() { 
    alert("test"); 
} 
</script> 

</body> 
</html> 

Bu basit kodu, kendload ve onbeforeunload ile bazı şeyleri test etmek için kullanıyorum. Sayfayı yenilediğimde/bıraktığımda ve onunload olayına neden olursam bir sebepten dolayı Firebug konsolunda hiçbir uyarı ve hata almıyorum. Eğer bu çalışmalardan önce kullanırsam ve hata alıyorum, ama önce çok iyi çapraz tarayıcı olmadığını duyuyorum. Herkes işaret çalışmadan önce OnUnload Uyarı Hatası "NS_ERROR_NOT_AVAILABLE"

NS_ERROR_NOT_AVAILABLE: Component returned failure code: 0x80040111  
(NS_ERROR_NOT_AVAILABLE) [nsIDOMWindow.alert] 

alert("test"); 

ben test değişkeni uyarmak için sadece metin "test" çalışmıyorum.

+0

Bu şeyi IE'de denediniz mi? – Pandian

+1

["' showModalDialog() ',' alert() ',' confirm() 've' prompt() 'yöntemlerinin şimdi pagehide, beforeunload ve unload events sırasında hiçbir şey yapmasına izin verilmez.] (Http: // www .w3.org/TR/html5-diff/# changes-2011-05-25) –

+0

@Pandian Açıkça bir Firefox hatası (ipuçları: 'NS_' ve 'nsI 'öneklerine ve Firebug' un sözlerine bakın). –

cevap

13

Bunun işe yaramasını istiyorsanız, onbeforeunload olayında olması gerekir, ancak bir uyarı/onaylama pop-up oluşturmak yerine, onbeforeunload olayı yerleşik bir pop-up'a sahiptir. Tek yapmanız gereken bir dizi döndürmektir ve kullanıcı sayfadan ayrılmaya çalıştığında açılır pencere görünecektir. Dönüş değişkeni yoksa, pop-up olmayacaktır.

  • Bunun en iyi yanı, açılan iletinin 2 düğmesinin olmasıdır: Tamam ve İptal et. Kullanıcı Tamam vurursa
  • , tarayıcı
  • onbeforeunload olay sadece kullanıcının ziyaret İptal, tarayıcı unload iptal edecek ve mevcut sayfada kalacak sayfa
  • ayrılırsanız devam edecek onunload olayı

bir örnek iptal edebilirsiniz açılan aşağıda verilmiştir: Eğer onunload durumunda bir uyarı yapmaya çalışıyoruz gibi

<script type="text/javascript"> 

window.onbeforeunload=before; 
window.onunload=after; 

function before(evt) 
{ 
    return "This will appear in the dialog box along with some other default text"; 
    //If the return statement was not here, other code could be executed silently (with no pop-up) 
} 

function after(evt) 
{ 
    //This event fires too fast for the application to execute before the browser unloads 
} 

</script> 

görünüyor. Buradaki konu çok geç olduğu. Sayfa zaten boşaltma yapıyor ve durmuyor. Gösterilecek bir uyarı mesajı alabilirsiniz, ancak sayfanın zaten boş olduğundan, kullanıcının tıkladığı önemli değildir.

En iyi bahsiniz, onbeforeunload olayıyla devam etmektir.

İlgili konular