在使用散列片段调用window.location.replace(...)后统一后退按钮的行为?

时间:2012-09-24 10:02:58

标签: javascript html mobile back-button browser-history

我在调用window.location.replace(...)后得到了后退按钮的不同行为,但我需要找到一种方法来在所有浏览器中获得相同的行为(包括移动设备)。

给出以下html(包含在文件testpage.html中):

<html>
    <body>
        <button onclick="window.location.replace('testpage.html#test2');">Replace</button>
        <button onclick="window.location.assign('testpage.html#test3');">Assign</button>
    </body>
</html>

最初的网址是testpage.html。

  1. 点击替换按钮 - 网址更改为testpage.html#test2
  2. 点击“分配”按钮 - 网址更改为testpge.html#test3
  3. 点击后退按钮......
  4. 然后不同的浏览器做不同的事情:

    • 在Chrome(21)和Firefox(15)上,网址会更改回testpage.html#test2,无法再进行后退点击。 这就是我所期望的,这就是我想要的确切行为。

    • 在Safari(5)和iOS(5)上,URL更改回testpage.html(没有散列片段),完全跳过包含#test2的中间URL。

    • 在IE(9)和WP7上,网址完全恢复到我在testpage.html之前的状态

    • 在Android浏览器(姜饼和冰淇淋三明治)上,第一次点击替换按钮不会做任何事情(不正确的行为)。第二次单击“分配”按钮会将URL设置为testpage.html#test3。然后返回按钮将url返回到testpage.html,没有散列片段,这与Safari和iOS相同,但是在第一次按钮点击没有做任何事情的情况下,这似乎是正确的行为。问题是对replace(...)的调用不起作用。

    无论如何,行为有何不同?有没有办法统一行为以匹配我在Chrome和Firefox上获得的行为。

0 个答案:

没有答案