2010-12-13 14 views
10

javascriptまたはPHPを使用してブラウザウィンドウを閉じる前に確認ダイアログボックスを表示する必要があります。 ブラウザの閉じるボタンをクリックすると、確認ボックスが表示されます。他の方はダイアログを表示しません。 私を助けてください。ブラウザを閉じるときにダイアログを確認しますか?

答えて

22

あなたは

function closeEditorWarning(){ 
    return 'Are you sure?' 
} 
window.onbeforeunload = closeEditorWarning; 

... onbeforeunloadイベントを処理するか、うまく

+3

をそして、あなたは、例えば、あなたは確認ダイアログを抑制したいはずです、コールバックから 'undefined'を返すことができますユーザーが何かの書き込みや編集を開始していないことを確認した後しかし、 'null'や' false'を返すと、IEは大雑把にあなたが* null *か* false *を望むかどうかを尋ねるメッセージを表示します。 – KajMagnus

+1

私はページ上に滞在ボタンをクリックして任意のコードを実行できますか? –

-3
function doUnload() 
{ 
    // use confirm dialog box here 
    confirm("Window is closing..."); 

} 

<body onunload="doUnload()"> 
+1

onbeforeunloadは、使用するイベントハンドラです。 – mplungjan

1

onunloadをそれを行うにはjqueryの、window.attachEvent/window.addEventListenerを使用する必要があり、非常に便利ではありません(私の中あなたができないようにあなたが要求しているconfirmアトリオンと何かを(おそらくwindow.openと新しい別のウィンドウを試みることを除いて、onbeforeunloadはより有用ですこの場合、

あなたのより良い賭けはonbeforeunloadですが、これは素晴らしいですが、Operaではうまくいきません(通常はディール・ブレーカーではありません)。

ツタが言ったように、それはこのようなものになります。

<script> 

    var userIsEditingSomething; // set this if something crazy happens 
     oldOnBeforeUnload = window.onbeforeunload; 

    window.onbeforeunload = function() { 
     // attempt to handle a previous onbeforeunload 
     if ('function' === typeof oldOnBeforeUnload) { 
      var message = oldOnBeforeUnload(); 
      if ('undefined' !== typeof message) { 
       if (confirm('string' === typeof message ? message : 'Are you sure you want to leave this page?')) { 
        return; // allow user to exit without further annoying pop-ups 
       } 
      } 
     } 
     // handle our own 
     if (userIsEditingSomething) { 
      return 'Are you sure you want to exit?'; 
     } 
    }; 

</script> 
+0

これは、ユーザーが何らかの理由でページを放置したときに必ず発生します。ブラウザを閉じるときだけでなく、 – mplungjan

+0

あなたが正しいです。おそらく、この問題(jqueryなど)には素晴らしい概念があるかもしれませんが、何年か前に、 "(event.clientX <0 || event.clientY <0)"という条件をテストして、誰かがウィンドウを閉じるボタン条件が真である)と通常のナビゲーション動作(リンクをたどって、フォームを提出する、戻る、進む)。これは誤りのない解決策ではありません(たとえば、ALT-F4は検出されませんでした)ので、誰かがより良いソリューションを提供できることを願っています。 – ivy

関連する問題