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