onbeforeunload タグを設定して、保存されていないコンテンツがある場合にのみ、特定のページでのみユーザーが特定のページを離れないようにしようとしています (単一のマスター ページを使用しています)。onbeforeunload タグに ##anything## を返すと、常に JavaScript の確認がトリガーされ、ポップアップ内に ##anything## が配置されることがすぐにわかりました。明らかに、これは現在予期されている動作ですが、if ステートメントで制御できる独自の確認ボックスを使用するという私の考えが失われています。
私はこれを試しましたが、うまくいきませんでした:
<body class="yui-skin-sam" onbeforeunload="document.onFormClose();">
<script>
document.onFormClose = function () {
if (document.getElementById('DirtyFlag').value == "true") {
document.getElementById('DirtyFlag').value == "false";
return 'You will lose all changes made since your last save';
}
}
</script>
ここで、DirtyFlag は、保存されていない変更が存在する場合に true になる隠しフィールドです。関数内に return を入れることでうまくいくことを願っていましたが、そのような運はありませんでした。
私の質問は、 onbeforeunload タグを組み込みの return で使用して、そのフィールドの値を保留してバイパスする方法はありますか? または、(これはあまり理想的ではありませんが)getElementById タグを設定またはリセットしたすべての場所で、onbeforeunload タグを動的に追加または削除できると思います。残念ながら、私もそれを行う方法がわかりません。ああ、jQuery やその他の JavaScript ライブラリの使用は完全に制限されています。