【发布时间】:2012-09-03 09:46:53
【问题描述】:
当页面被 JavaScript 修改时,我遇到了浏览器历史记录的一个小问题。
如何重现
- 打开的页面包含可删除的元素。然后我点击删除按钮,触发带有 ajax 和
jquery.remove()的 JavaScript - 然后我点击一些链接打开另一个页面
- 在新页面上,我将点击浏览器的返回按钮
- 我在页面上删除了实际上在数据库中不存在的元素。
解决办法是什么?清除浏览器历史记录? (可以吗?)
解决方案
感谢 Endy 和我提供了一些解决方案的来源:
-
在 HTML 模板中创建一个输入[type=hidden] 并删除名称(随便)
-
创建可以使用唯一 ID 删除的元素
-
什么时候触发删除动作,添加唯一ID删除输入
var 已删除 = $("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();
}
}
}
【问题讨论】:
标签: javascript html browser-history