【问题标题】:History and modified HTML by JavaScriptJavaScript 的历史和修改的 HTML
【发布时间】:2012-09-03 09:46:53
【问题描述】:

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

如何重现

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

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

解决方案

感谢 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


【解决方案1】:

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

window.history.forward();

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

【讨论】:

  • 没有好主意,因为当用户转到您的第 1 页时,更改了页面中的一些元素,然后前进到第 2 页并返回第 1 页,更改了页面上的元素并且操作触发了 window.history 。向前();然后用户被转发到第 2 页
猜你喜欢
  • 2012-06-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-24
  • 1970-01-01
  • 2011-06-28
  • 1970-01-01
  • 2015-11-27
相关资源
最近更新 更多