たとえば、誰かが記事を書いているときに、誤ってブラウザを閉じてしまいました。彼が書いたものすべてを保存することは可能ですか?
このようなもの:
onExit -> ユーザーが入力したすべての情報を取得 -> データベースに情報を保存する AJAX リクエスト。
または
x秒ごとに先制的に保存することによってのみ可能ですか?
たとえば、誰かが記事を書いているときに、誤ってブラウザを閉じてしまいました。彼が書いたものすべてを保存することは可能ですか?
このようなもの:
onExit -> ユーザーが入力したすべての情報を取得 -> データベースに情報を保存する AJAX リクエスト。
または
x秒ごとに先制的に保存することによってのみ可能ですか?
私の会社は ajax クエリを実行して 5 秒ごとに保存することでこれをlocalStorage
行っていますが、クライアントでの保存を調べ、onunload
それを保存して後で回復するために使用する必要があります。
すべてのイベントと 500 ミリ秒ごとに保存し、1 つのフィールドを保存するhtml5 のメモ帳を作成しましたが、簡単に変更できます。(必須の) コードは次のとおりです。localStorage
onchange
onbeforeunload
<textarea placeholder="Type here, see it here..." id="notepad"></textarea>
<script>
var n = document.getElementById("notepad");
/* save */
var s = function(){localStorage.setItem("notepad", n.value);}
/* retrieve (only on page load) */
if(window.localStorage){ n.value = localStorage.getItem("notepad");}
/* autosave onchange and every 500ms and when you close the window */
n.onchange = s();
setInterval( s, 500);
window.onunload = s();
</script>
そのページのソースを表示すると、古いブラウザをサポートするために使用されるポリフィルも見つかりますが、IE8+で動作するlocalStorage
はずです
クライアントが単独で ajax 呼び出しを完了するとは信じてonbeforeunload
いませんが、上位のブラウザーでその機能がどのように機能するかについては、本当にすべてを知っているわけではありません。
ローカル ストレージと ajax の組み合わせを使用する可能性が高く、非アクティブな期間の後に ajax 要求が行われるように遅延 setTimeout を使用します。
たとえば、保存するアイテムのイベントに ajax の更新をバインドします。
$("#fieldToSave").bind("keyup",(function()
{
var timeoutId = null;
var previous = "";
return function(e)
{
var that = this;
if ($(that).val() != previous)
{
previous = $(that).val();
clearTimeout(timeoutId);
timeoutId = setTimeout(function()
{
ajaxRefresh();
if(window.localStorage)
{
localStorage.setItem("notepad", that.value);}
}
}, 300);
}
};
})());
このアプローチは、ajax とローカル ストレージの両方を使用して「fieldToSave」の値を保持します。さらに、何度も継続的に保存するわけではありません。たとえば、キーアップで行うことは、保存を実行しますが、300 ミリ秒ごとに 1 回だけです。したがって、ユーザーが継続的に入力している場合、ユーザーが 300 ミリ秒停止するまで保存されません。これは、実際に必要なイベントにバインドできます。
ページの読み込み時にコンテンツをどこからどのように読み込むかは、あなた次第です。
お役に立てれば。
の答え: x 秒ごとにプリエンプティブに保存することによってのみ可能ですか? 以下です
私がブローコードで行ったように、特定の時間の ajax 関数を呼び出す必要があります...settime out 関数は、1000 秒ごとに ajaxRefresh 関数を呼び出します...
function onLoad() {
setTimeout(ajaxRefresh, 1000);
}
function ajaxRefresh()
{
//ajax code to post data
$.ajax({
type: "GET", //GET or POST or PUT or DELETE verb
url: ajaxUrl, // Location of the service
data: "", //Data sent to server
contentType: "", // content type sent to server
dataType: "json", //Expected data format from server
processdata: true, //True or False
success: function (json) {//On Successful service call
var result = json.name;
$("#dvAjax").html(result);
},
error: function() { alert("err")}; // When Service call fails
});
setTimeout(ajaxRefresh, 1000);
}