ユーザーが Web フォームで行った変更を保存していない場合にブラウザー ウィンドウを閉じようとしたときに、ユーザーに警告したいと思います。
ASP.NET 3.5 (ASP.NET Ajax を使用) を使用しています。
簡単に実装できる一般的なソリューションはありますか?
編集:私の質問は明確ではなかったかもしれません.ASP.NETサーバーコントロールの方法論にうまく統合する方法を特に探しています.
ユーザーが Web フォームで行った変更を保存していない場合にブラウザー ウィンドウを閉じようとしたときに、ユーザーに警告したいと思います。
ASP.NET 3.5 (ASP.NET Ajax を使用) を使用しています。
簡単に実装できる一般的なソリューションはありますか?
編集:私の質問は明確ではなかったかもしれません.ASP.NETサーバーコントロールの方法論にうまく統合する方法を特に探しています.
あなたはオフに活用したいと思うでしょう
window.onbeforeunload
イベント。作成したメールを保存していないときにウィンドウを閉じようとすると、Gmail に似ています。
ここにいくつかのサンプル JS があります。
これに役立つ ASP.NET エクステンダー コントロールを次に示します。
http://www.codeproject.com/KB/ajax/ajaxdirtypanelextender.aspx
お役に立てれば。あなたのニーズに完全には合わないかもしれませんが、少なくともその方法を示しています。
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] |
---------------------------------
IExtenderProviderを拡張するコントロールを作成し、JavaScript を作成して変更を追跡することができます (または、変更追跡メカニズムにコントロールを登録する可能性が高くなります)。
ただし、多くのポストバックが必要でない限り、Javascript で変更追跡を実装する必要があります。
私はPrototype.Jsを使用して以前の雇用主でこれを行いました。唯一難しかったのは、Internet Explorer と Firefox で「ナビゲーションのキャンセル」フラグを設定する必要がある方法の違いだったと思います。
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>
それがどのようにうまくいくか見てください
編集:ウィンドウを閉じることはできませんが、フォームに保存されていないデータがあることをユーザーに警告します。
クロスブラウザーでは動作しないことが確認されました。別の方法を調査して、ここに投稿します。
他の人が言及したように、window.onunload/onbeforeunload イベントを確認する必要があります。このイベントの問題は、ページがアンロードされるたびに呼び出されることです。ブラウザ ウィンドウを閉じるときだけでなく、同じブラウザ ウィンドウ内のリンクをクリックして同じサイトの別のページに移動するときも同様です。やりたいことができるかもしれませんが、この動作を予測できると役に立ちます。