Mensagem customizada do Firefox 4 onBeforeUnload

No Firefox 3 , consegui escrever um popup de confirmação personalizado com:

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

Agora no Firefox 4 , ele não mostra minha mensagem personalizada. A mensagem padrão que ele fornece não é nem precisa do que meu aplicativo faz.

firefox 4 confirma

Esta mensagem padrão pode ser substituída?

De MDN :

Observe que, no Firefox 4 e posterior, a string retornada não é exibida para o usuário. Veja Bug 588292 .

Este “Bug” é na verdade um (imho questionável) recurso .. então não há maneira de exibir a mensagem no Firefox 4. Se você acha que deve ser alterado, comentar sobre esse bug para que os desenvolvedores do Firefox saberão que as pessoas realmente querem ser capaz de mostrar uma string personalizada.

Além da resposta acima, aprimorei a solução alternativa.

Eu usei jquery aqui. você também pode usar o javascript funciton padrão.

 $(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?"; } }); 

Testado e trabalhando no firefox 11 também. 🙂

Minha solução é mostrar o alerta em onbeforeunload:

 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."; } 

(Ele mostra dois diálogos no Firefox, um diálogo em outro lugar.)

Tente implementá-lo com uma mensagem de confirmação.

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

é claro que quando o usuário confirma, a mensagem FF4 é mostrada, então é melhor você exibir essa mensagem uma vez por site no login / visita. Um cookie deve fazer o truque.