我在调用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。
然后不同的浏览器做不同的事情:
在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上获得的行为。