ページが JavaScript によって変更されたときに、ブラウザーの履歴に小さな問題が発生しました。
再現方法
- 削除可能な要素を含むページを開きました。次に、ajaxでJavaScriptをトリガーする削除ボタンを押して、
jquery.remove()
- 次に、リンクをクリックして別のページを開きます
- 新しいページでブラウザの戻るボタンを押します
- データベースに実際には存在しない要素が削除されたページにいます。
解決策は何ですか?ブラウザの履歴を消去しますか? (できますか?)
解決
Endy とソースのおかげで、いくつかの解決策が得られました。
HTML テンプレートで、名前が削除された入力 [type=hidden] を作成します (何でも)
一意のIDで削除できる要素を作成する
削除アクションがトリガーされたとき、入力を削除する一意の ID を追加します
var deleted = $("input[name=deleted]"); deleted.val(deleted.val()+id+";");
ドキュメントの準備ができたら、要素を削除するチェッカーを作成します
ブラウザは 入力に追加された値を自動的に記憶するため、ページがキャッシュから表示されると値が含まれ、ドキュメントの準備が整います。
コード:
var deleted = $("input[name=deleted]");
if (deleted.length > 0 && deleted.val() != "") {
var deletedInput = deleted.val();
var deletedArray = deletedInput.split(";");
for (var i = 0; i < deletedArray.length;i++) {
if (deletedArray[i] != "") {
$("#photo"+deletedArray[i]).remove();
}
}
}