1

当页面被 JavaScript 修改时,我遇到了浏览器历史记录的一个小问题。

如何重现

  1. 打开的页面包含可以删除的元素。然后我点击删除按钮,它使用 ajax 触发 JavaScript 和jquery.remove()
  2. 然后我点击一些链接打开另一个页面
  3. 在新页面上,我将点击浏览器的后退按钮
  4. 我在带有已删除元素的页面上,该元素实际上不存在于数据库中。

解决办法是什么?清除浏览器历史记录?(我可以吗?)

解决方案

感谢 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();
        }
    }
 }
4

1 回答 1

0

您无法清除浏览器历史记录。您可以做的是始终在您删除内容的页面上强制执行 Javascript。

window.history.forward();

或者,更好的是,在返回时修改页面,使其与您的数据库同步。

于 2012-09-03T09:55:34.680 回答