機能の使用が見られないからといって、それが役に立たないというわけではありません。
Stack Exchange ネットワーク、GMail、Grooveshark、Yahoo! メールと Hotmail は onbeforeunload プロンプトを使用して、ユーザーが何かを編集し始めた後にページを離れるのを防止/警告します。ああ、保存可能なユーザー入力データを受け入れるほぼすべてのデスクトップ プログラムは、ユーザーが離れる前にプロンプトを表示するこの UX パターンを利用しています。
これと同様に動作する関数があります:
window.onbeforeunload = function(){
// only prompt if the flag has been set...
if(promptBeforeLeaving === true){
return "Are you sure you want to leave this page?";
}
}
ユーザーがページから移動しようとすると、ブラウザーはページを離れるか、ページにとどまるかを選択するオプションを提示します。ユーザーが [このページを離れる] オプションを選択し、ページが完全にアンロードされる前にもう一度リンクをクリックすると、ダイアログが再び起動します。
この問題に対する絶対確実な解決策はありますか?
注:以下は解決策ではありません:
var alreadyPrompted = false;
window.onbeforeunload = function(){
// only prompt if the flag has been set...
if(promptBeforeLeaving === true && alreadyPrompted === false){
alreadyPrompted = true;
return "Are you sure you want to leave this page?";
}
}
ユーザーが「ページにとどまる」オプションを選択すると、将来onbeforeunload
の s が機能しなくなる可能性があるためです。