次の Jquery 関数を使用して、保存されていない変更があり (SO と同様)、現在の画面を離れようとしているときにプロンプトを表示してユーザーに通知します。
<!-- in my aspx page -->
<script type="text/javascript" language="javascript">
window.onbeforeunload = function()
{
if (HasPendingUpdates())
{
return "Changes you have made will not be saved.";
}
}
</script>
これは期待どおりに機能し、ユーザーが href をクリックしてブラウズしたり、戻るボタンなどを使用しようとすると、メッセージ ボックスが表示されますasp:LinkButton
。ページを離れる前に。ユーザーがこれをクリックするLinkButton
と、プロンプトが 2 回表示されます。
シナリオ:
- ユーザーが
LinkButton
- プロンプトが表示され、ユーザーはキャンセル ボタンをクリックします。
プロンプトが消え、ユーザーはまだ画面上にいます。良い。
ユーザーが
LinkButton
- プロンプトが表示され、[OK] ボタンをクリックします。
- プロンプトが消え、同じプロンプトが再び表示されます。
- ユーザーはもう一度 [OK] をクリックします。
- プロンプトが消え、ユーザーが次の画面に移動すると、すべて問題ありません。
では、なぜ 2 番目のプロンプトが表示されるのでしょうか??? OnBeforeUnload はどのように 2 回起動しますか?