2011-03-22 12 views
68

, ben ile özel bir onay açılır pencere yazabiliyordu: 4 Firefox ŞimdiFirefox 4 onbeforeunload özel ileti 3</strong> Firefox <strong>yılında

window.onbeforeunload = function() { 
    if (someCondition) { 
     return 'Your stream will be turned off'; 
    } 
} 

, benim özel mesaj göstermez. Sağladığı varsayılan mesaj, uygulamamın yaptığı iş için bile doğru değildir.

firefox 4 confirm

bu varsayılan mesajı iptal edilebilir?

+0

[Crossbrowser onbeforeunload?] Dosyasının olası kopyası (http://stackoverflow.com/questions/7389554/crossbrowser-onbeforeunload) – Aelios

cevap

52

MDN Gönderen:

Not Firefox 4 ve üstü döndü dize kullanıcıya görüntülenen olmadığını söyledi. Bug 588292'a bakın.

Bu "Bug" aslında bir (imho sorgulanabilir) özelliğidir .. bu yüzden Firefox geliştiriciler bilecek böylece değiştirilemez gerektiğini vericiyi yorumunu düşünüyorsanız Firefox 4'te mesajı görüntülemek için hiçbir yolu yoktur insanların aslında özel bir dize gösterebilmelerini istiyorlar.

+7

Bu, hem iyi hem de kötü için kullanılabilir. ** İYİ **: webcast'inizin kapatılmayacağını, kaydedilmemiş olarak değiştirildiğini bildiren ... ** BAD **: tersine psikoloji yapan virüs siteleri: "Virüsü kurmamak için iptal et". – JoJo

+1

Bu kesinlikle bir özelliktir. Verilerin girildiği bir sayfanın bırakılmasıyla ilgili sorunlar evrenseldir. Daha agresif bir uyarıya ihtiyacım yok çünkü bu mesajların% 99'u rahatsız edici veya yanıltıcı. Uygulamanız özel değil. –

+17

Örneğin, webradio'm bir flash oynatıcısı var ve çalıştırdığımda "bu sayfayı kapatırsanız akış çalmayı durduracak" mesajını görüntülüyorum. "Verileri kaybedebilirsin" den çok farklı. – ThiefMaster

1

bir onaylama mesajı olmadan uygulamayı deneyin tabii

window.onbeforeunload=function(){ 
    return confirm("Are you sure??"); 
} 

Kullanıcı daha sonra FF4 mesajı gösterilir onaylar, yüzden belki daha iyi ekran bu kez oturum açma/ziyaret site başına. Bir çerez hile yapmalıdır.

+1

Kullanıcı "Emin misiniz?" iletişim kutusu, FF4 iletisinin görüntülenmesini engellemez veya sayfanın yüklenmeye çalışılması engellenmez. – pkaeding

+0

Evet, ancak bu kullanıcıya en azından bu Hata düzeltilinceye kadar bir uyarı vermenizi sağlar, bir uyarı önerdim, ancak o zaman yük boşaltma sorusunu göstermiyor – Jguru

+1

HTML5 özelliklerine göre uyarı, uyarı, onaylama vb. ihmal edilebilir. Benim durumumda, teyit çalışmadı. – IntelliData

3

Benim geçici çözüm onbeforeunload uyarıyı göstermektir:

window.onbeforeunload=function() { 
    if (/Firefox[\/\s](\d+)/.test(navigator.userAgent) && new Number(RegExp.$1) >= 4) { 
     alert("Blah blah. You have to confirm you are leaving this page in the next dialogue."); 
    } 
    return "Blah blah."; 
} 

(O Firefox'ta iki diyalogları, başka yerde bir diyalog gösterir.) Yukarıdaki Yanıt için

+0

bu sekmeyi/tarayıcıyı kapatırken iki iletişim kutusu gösterecektir, değil mi? – ThdK

+0

@ThdK: Evet, iki diyalog gösterir, yazıya bir not ekledim. – xmedeko

+0

"Dönüş" satırını kaldırırsanız Blah blah. "; 'sadece ilk iletişim kutusunu gösterir – gomes

32

eklenmesi, ben geçici çözüm geliştirdik.

Burada jquery kullandım. varsayılan javascript funciton da kullanabilirsiniz.

$(window).bind('beforeunload', function() { 
    if(/Firefox[\/\s](\d+)/.test(navigator.userAgent) && new Number(RegExp.$1) >= 4) { 
     if(confirm("Are you Sure do you want to leave?")) { 
      history.go(); 
     } else { 
      window.setTimeout(function() { 
       window.stop(); 
      }, 1); 
     } 
    } else { 
     return "Are you Sure do you want to leave?"; 
    } 
}); 

test edilmiş ve hem de ateş 11 görev yapmaktadır. :)

+0

İyi Çözüm .. –

+4

@Nasif, Her şeyden önce mükemmel kod. Ama sizin window.setTimeout (function() {window.stop();}, 1); , x, yani, firefox sekmesinin kapat düğmesini tıkladığınızda çalışmaz. , "Leave window" penceresinin varsayılan açılır penceresi çalışıyor. – user367134

+0

Evet, yukarıdaki kod sayfa izinleri içindir, pencereyi kapatmak için değil Teşekkürler. – Nasif