Mensagens do botão personalizado onBeforeUnload

Eu tenho a seguinte function beforeunload que eu roubei de outro lugar ….

$().ready(function() { $("#posManagerLoginForm").trigger("submit"); $(window).bind("beforeunload", function(){ window.setTimeout(function () { window.location = "home.htm"; }, 0); window.onbeforeunload = null; // necessary to prevent infinite loop that kills your browser return "Press 'Stay On Page' to go to Reporting Manager home"; }); }); 

Independentemente da opção que eu seleciono, eu sou navegado para home.htm. Existe uma maneira que eu possa fazer a checkbox de diálogo um botão ok em vez das opções padrão “Deixar página” ou “Permanecer na página”?

Ou talvez outra pessoa possa fazer uma sugestão sobre como lidar melhor?

obrigado

Você não pode sobrescrever o estilo do diálogo onbeforeunload . Acredite, eu tentei isso antes em meus projetos anteriores.

Referência: http://msdn.microsoft.com/pt-br/library/ms536907%28VS.85%29.aspx

Ele é construído no object do navegador e você não tem controle sobre ele.

Você pode, no entanto, definir sua própria checkbox de diálogo para mostrar quando o evento onbeforeunload acionado, mas não desabilitará o que o normal mostrará. Muito chato, sim.

A razão pela qual você ainda está sendo redirecionado é porque você não está realmente fazendo nada para impedi-lo.

Se você deseja abrir uma checkbox de alerta antes que o formulário seja enviado, certifique-se de que o comportamento padrão seja impedido (que é enviar o formulário) e, em seguida, redirecione depois que o OK tiver sido clicado assim:

 $().ready(function() { $("#posManagerLoginForm").submit(function( event ) { event.preventDefault(); alert("Press 'OK' to go to Reporting Manager home"); window.location = "home.htm"; }); }); 

Embora não tenha certeza qual seria o uso disso. Se você quisesse permanecer no formulário se um botão diferente fosse pressionado (por exemplo, ‘Cancelar’), você preferiria usar uma ‘confirmação’ assim:

 $().ready(function() { $("#posManagerLoginForm").submit(function( event ) { event.preventDefault(); if confirm(("Press 'OK' to go to Reporting Manager home")) window.location = "home.htm"; }); }); 

Você pode replace o alert ou confirm com uma checkbox de diálogo personalizada também, dependendo de qual biblioteca você está usando. Apenas certifique-se de colocar window.location = "home.htm" dentro da function do diálogo, caso contrário, ele será executado imediatamente.

Por exemplo, você pode querer dar uma olhada na checkbox de diálogo da interface do usuário do jQuery aqui: https://jqueryui.com/dialog/