3

ユーザーが Web フォームで行った変更を保存していない場合にブラウザー ウィンドウを閉じようとしたときに、ユーザーに警告したいと思います。

ASP.NET 3.5 (ASP.NET Ajax を使用) を使用しています。

簡単に実装できる一般的なソリューションはありますか?

編集:私の質問は明確ではなかったかもしれません.ASP.NETサーバーコントロールの方法論にうまく統合する方法を特に探しています.

4

6 に答える 6

3

あなたはオフに活用したいと思うでしょう

window.onbeforeunload

イベント。作成したメールを保存していないときにウィンドウを閉じようとすると、Gmail に似ています。

ここにいくつかのサンプル JS があります。

http://forums.devarticles.com/javascript-development-22/how-to-stop-browser-from-closing-using-javascript-8458.html

于 2008-10-30T12:58:51.873 に答える
3

これに役立つ ASP.NET エクステンダー コントロールを次に示します。

http://www.codeproject.com/KB/ajax/ajaxdirtypanelextender.aspx

お役に立てれば。あなたのニーズに完全には合わないかもしれませんが、少なくともその方法を示しています。

于 2008-10-30T13:10:28.073 に答える
2

window.onbeforeunloadイベントを追加するだけです。これにより、ページに留まるか離れるかを決定できるモーダル ウィンドウが表示されます。

window.onbeforeunload = function (event) {
  var message = 'All changes will get lost!';
  if (typeof event == 'undefined') {
    event = window.event;
  }
  if (event) {
    event.returnValue = message;
  }
  return message;
}

すべてのブラウザーは、標準メッセージ (「このページから移動してもよろしいですか?」) とカスタム メッセージを提供します。

したがって、ウィンドウは次のようになります。

---------------------------------
| Are you sure you want to      |
| navigate away from this page? |
|                               |
| All changes will get lost!    |
|                               |
|     [Cancel]     [Ok]         |
---------------------------------
于 2008-10-30T14:19:18.560 に答える
1

IExtenderProviderを拡張するコントロールを作成し、JavaScript を作成して変更を追跡することができます (または、変更追跡メカニズムにコントロールを登録する可能性が高くなります)。

ただし、多くのポストバックが必要でない限り、Javascript で変更追跡を実装する必要があります。

私はPrototype.Jsを使用して以前の雇用主でこれを行いました。唯一難しかったのは、Internet Explorer と Firefox で「ナビゲーションのキャンセル」フラグを設定する必要がある方法の違いだったと思います。

于 2008-10-30T13:07:43.150 に答える
0

Page_Unload イベント (または body タグでこの関数を呼び出す<body onunload="onPageUnload();">) で、フォームにデータが含まれているかどうかを確認できます。次に、いくつかの Java を実行できます。

<script language="text/javascript">
   function onPageUnload() {
        var oConfirm = window.confirm("You have unsaved form data, are you sure you want to close this window?");
        if(oConfirm){
            //Close
        }else{
            //Dont 
        }
    }
</script>

それがどのようにうまくいくか見てください

編集:ウィンドウを閉じることはできませんが、フォームに保存されていないデータがあることをユーザーに警告します。

クロスブラウザーでは動作しないことが確認されました。別の方法を調査して、ここに投稿します。

于 2008-10-30T12:55:55.547 に答える
0

他の人が言及したように、window.onunload/onbeforeunload イベントを確認する必要があります。このイベントの問題は、ページがアンロードされるたびに呼び出されることです。ブラウザ ウィンドウを閉じるときだけでなく、同じブラウザ ウィンドウ内のリンクをクリックして同じサイトの別のページに移動するときも同様です。やりたいことができるかもしれませんが、この動作を予測できると役に立ちます。

于 2008-10-30T13:04:26.463 に答える