更新: onbeforeunload を機能させようとしているページで何かが起こっています。レイアウトに設定すると、そのページ以外のすべてのページにポップアップ表示されます...したがって、壊れたJavaScript、またはonbeforeunloadを再定義するJavaScriptファイルが必要です。一度しか定義できないので
私はRailsプロジェクトに取り組んでおり、保存せずにページを離れるとデータが失われることをユーザーに警告するポップアップを設定しています. だから私はwindow.onbeforeunloadを使用しています
このスクリプト コードをビュー ファイルの先頭に追加して、1 つのページに設定します。
var saving = false;
window.onbeforeunload = function(){
if(!saving)
return 'Are you sure you don\'t want to save before you leave?';
};
ユーザーが保存ボタンを押すと、保存が true に設定され、別のページにリダイレクトされます。
同じ機能を必要とする別のビューファイルでまったく同じものを設定しようとすると、問題が発生します。
上記のコードをファイルにドロップした場合を除いて、ポップアップはまったく表示されません...いつでも。そこで、onbeforeunload 関数を設定するために利用可能な他のオプションを調べました。
だから私は現在それを次のように設定しています:
var saving = false;
window.onbeforeunload = displayConfirm();
function displayConfirm(){
if(!saving){
if(confirm('If you leave without saving, your changes will be lost. Press cancel to go back to save')){
confirmExit();
}
}
}
2ページ目に。私の問題は、ここでのポップアップが最初の実装と同じように機能しないことです。さらに奇妙なことに、ポップアップはウィンドウのロード時に表示されます...ウィンドウのアンロード前ではありません。
私はこれを数時間見回していじっています。これは簡単に追加できるはずだったので、本当にイライラし始めています。すでに別のページに設定されており、正しく機能しているように見えます。何がうまくいかないのか、または私が愚かな間違いを犯している場合、何か洞察をいただければ幸いです。
ありがとう、
-アラン