これはよくある質問のようですが、検索で何も返されません。
ページがアンロードされる前に実行される次のコードがあります。問題は、アンロードがポストバックである場合、ユーザーに警告を発したくないのですが、ポストバックとユーザーがナビゲートするのを区別する方法がわかりませんたとえば、別のページ。
// This is executed before the page actually unloads
$(window).bind("beforeunload", function () {
if (prompt) {
//prompt
return true;
}
else {
//reset our prompt variable
prompt = true;
}
})
コード ビハインドでスクリプトを実行します。つまり、Page.IsPostBack の場合、プロンプトを設定するオプションはありません。
何か案は?
編集:
これが私が最終的に得た解決策です:
function DoNotPrompt() {
prompt = false;
}
次に、これをすべてのコントロールに追加し、ユーザーが何かを実行してポストバックを発生させることができるようにしました。
OnClientClick="DoNotPrompt()
次に、このフラグをチェックし、ユーザーが実際にページから離れていた場合、つまりポストバックではない場合にのみ、「beforeunload」に文字列を返しました。
このコードも使用する必要がありました: var magicInput = document.getElementById('__EVENTTARGET');
if (magicInput && magicInput.value) {
// the page is being posted back by an ASP control
prompt = false;
}
その理由は、リスト ボックスであるカスタム ユーザー コントロールがあり、上記のメソッドを追加できなかったからです。そのため、これを使用してそのイベントをキャッチし、フラグを false に設定しました。
最もエレガントなソリューションではありません。
ありがとう、マイケル