0

ユーザーがページを離れようとしたときにポップアップするウィンドウで dojo ボタンを作成する必要があります。

dojo.addOnUnload(window, "test");
function test() {
  if(hasPendingChange){
    //function goes here i believe
  }
}

これが正しい形式であると確信していますが、ユーザーの応答を待つ代わりにページを離れています。何か案は?

ありがとうございました!

4

1 に答える 1

0

beforeunload のデフォルトの実装をオーバーライドすることはできません。

イベントハンドラを window.onbeforunload に接続することは可能ですが、結果が予想とは異なる可能性があるため、複数のハンドラは問題になります。

window.onbeforeunload、ネイティブ JS エンジンによって呼び出される関数であり、String. (常に) ネイティブconfirm(str)ダイアログ ボックスがポップアップしstrます。つまり、 beforeunload 関数から返された場合です。

それがポップアップするのを止める唯一の方法confirmは、ブロッキング呼び出し(のようなdijit.Dialog{..}).show(); while(1))を行うことですが、それは実際には実現可能ではありません。また、無限の while を壊したときに最終的にポップアップするダイアログで「いいえ」を選択するようにユーザーに伝える必要があります:)

だから、賢明な例

var g_ChangesMade = false;
window.onbeforeunload = function() {
    return (g_ChangesMade == true ? "Leaving Page with unsaved changes" : null);
}

文字列を含む確認ダイアログを表示します - if global _ Changes Are Made

  --------------------
  | Leaving Page...  |
  |                  |
  |  Ok     Cancel   |
  --------------------
于 2012-07-18T18:59:12.807 に答える