【问题标题】:Changing Javascript History更改 Javascript 历史记录
【发布时间】:2010-11-23 16:59:12
【问题描述】:

当我加载我的 php 页面时,我会附加一些数据。例如 MyPage.php?value=something。 正如预期的那样,当我使用后退按钮来回移动时,它总是加载附加相同的数据。我不想要那个。我希望在页面加载后,我应该能够将历史记录更改为仅存储 MyPage.php 而没有附加数据。所以现在当我使用后退按钮时,它只会加载 MyPage.php。我该怎么做 - javascript、jquery、php 什么的???

如果有一种方法可以在不触及历史对象的情况下做到这一点,那也很好。我只是假设它需要一些历史调整。如果需要在客户端或服务器端进行调整,我也可以。

【问题讨论】:

  • 您知道,您的用户可能会将浏览器历史记录视为一项功能。即使您想禁用它,他们也可能不会,最终浏览器运行在他们的计算机上,而不是您的计算机上。

标签: javascript url-rewriting history back-button


【解决方案1】:

据我所知,这样调整历史是不可能的,也不是处理这个问题的好方法。

您可以使用 cookie 来确定页面何时加载超过两次,或者将数据存储在会话变量中,并在处理完成后将其删除。

【讨论】:

    【解决方案2】:

    我假设数据是使用 GET 方法附加的。使用 POST 不会在 MyPage.php 之后附加文本,但仍然可以将数据传递到页面。

    【讨论】:

      【解决方案3】:

      历史就是历史。改变它有点麻烦(如果你这样做,你可能会遇到其他问题)。

      最好要么根本没有查询字符串,而是使用js或服务器端逻辑来确定动作,或者让js或服务器端逻辑忽略第二个请求。

      【讨论】:

        【解决方案4】:

        如果您可以调整历史记录,那么您可能可以查看此内容。

        history.replaceState({}, document.title, "MyPage.php");
        

        这会将当前 window.location 重写为“MyPage.php”而不刷新页面。

        【讨论】:

          猜你喜欢
          • 2012-06-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多