4

タスク管理アプリケーションに問題があり、ユーザーがブラウザー/タブを閉じると、誤ってブラウザー/タブを閉じたために入力した情報が消えてしまい、入力したテキストが失われることがあります (また、一部のユーザーはテキストに入力するのに30分かかります)。

だから私は解決策を提供しなければなりません.私はいくつかのアイデアを持っていますが、最善の方法について意見を求めていました.

オプション1:

  • window.onunloadまたは場合によってはwindow.onbeforeunloadイベントで、confirm() ダイアログを呼び出し、最初にタスク ログ領域にテキストが含まれていて、空白でないかどうかをテストします。空白でない場合は、呼び出しwindow.confirm()て、ユーザーがログを保存せずにタブ/ウィンドウを閉じるかどうかを尋ねます。

オプション #1 に関する私の懸念は、それがユーザーの邪魔になる可能性があることです。

オプション 2:

  • 同じイベントで、confirm() を呼び出さずに、代わりにタスク ログ領域のテキストを強制的に Cookie に保存します。次に、同じページの Cookie から保存されたタスク情報を復元しようとするボタンを提供する可能性があります。そのボタンを押すと、Cookie が解析され、情報が取得されます。
4

3 に答える 3

6

window.onbeforeunloadイベントは少し奇妙に機能します。ハンドラーを定義すると、ブラウザーは、ハンドラー関数から返された文字列をメッセージの中央に挿入して、ページから移動することによってデータが失われることに関する一般的なメッセージを表示します。ここを参照してください:

代替テキストhttp://img291.imageshack.us/img291/8724/windowonbeforeunload.png

したがって、私たちが行うこと:ページ上の何かが保存されていないことがわかった場合、次のように設定します。

window.onbeforeunload = function(){
 return "[SOME CUSTOM MESSAGE FROM THE APP]";
}

ユーザーが保存し、メッセージを表示する必要がないことがわかったら、次のように設定します。

window.onbeforeunload = null;

少し煩わしいですが、ユーザーが誤ってデータを失うよりはましです。

于 2009-10-19T15:58:08.720 に答える
2

ユーザーが自分が行っていることを送信する前にナビゲートするほど愚かな場合は、明らかにばかげたことをするつもりかどうかを尋ねる侵入を気にするべきではありません。

また、SO は移動時に確認ダイアログを使用します。ここにいるほとんどの (一部の) ユーザーかなり賢いです。

これは最も使いやすく、おそらくユーザーにとってより役立つでしょう。

誰かが長いテキストを書き、それを送信せずにブラウザーを閉じた場合、翌朝、それをしなかったことを発見するよりも、そこで問題を分類した方が喜んでいるかもしれません...

于 2009-10-19T16:01:50.053 に答える
2

あなたが使用している特定のWebサーバー/言語のAJAXフレームワークを調査します。AJAX を使用すると、入力したとおりにフォーム データを保存できます (たとえば、これが Google ドキュメントのしくみです)。

于 2009-10-19T15:51:00.903 に答える