Chrome强制页面刷新window.history.back()

时间:2016-10-07 14:51:00

标签: javascript google-chrome browser-history pushstate

我在没有框架的单页表单上工作。一个简单的单页面,不使用框架。我正在使用带有history.pushState的哈希系统,因此根据单击的div,我分配了一个不同的哈希。例如:

        var stateObj = { id: "file" };


        $(document).on('click', "#foo", function () {
                                showTemplate(templates_main, data);
                                history.pushState(stateObj, "page 1", '#foo')

        }),

        $(document).on('click', "#faa", function () {
                                showTemplate(templates_main, data);
                                history.pushState(stateObj, "page 1", '#faa')

        }),

在提交表单之前,pushState在两个浏览器上都会有相同的行为。

  • 网页网址== index.html
  • 点击#foo,网址== index.html#foo
  • 点击#faa网址== index.html#faa
  • 点击后退网址应为index.html#foo

提交表单后,使用perl创建一个新页面。如果给出的选项有误,则创建的页面将包含一个按钮,该按钮会触发window.history.back()再次尝试。

这适用于Firefox,它会在您单击后返回所有数据输入。

问题始于Chrome,因为在提交表单并按下后退按钮后,我可以看到Chrome首先转到index.html#foo,然后自动刷新页面,从而生成URL == index.html。< / p>

我知道如果您想让Firefox的行为与Chrome或IE一样,您可以将onunload=""添加到正文中。但有什么我可以添加到身体或我可以做的任何事情,使Chrome的行为像Firefox,避免重新加载页面?

  • 为什么Chrome会这样做?
  • 如何避免页面刷新?或
  • 如何在重新加载页面后,在执行history.back()时将页面更改为原始状态?

类似的东西:

onclick="window.location.href=document.history.length(-1)"

谢谢,

1 个答案:

答案 0 :(得分:0)

对我来说,Chrome仅在完成文件上传后触发history.back()时强制页面刷新。