使用history.replaceState在加载前更改上的url/state



我一直在寻找这个问题的答案,但找不到,我想知道这是否是一个错误,浏览器似乎对这个HTML5功能的支持很差。。

我只有chrome和firefox要测试。(最新稳定版本)。

$(function(){
if ( window.history.state != null ) $( "#content" ).html( window.history.state.value );
$( window ).bind( "beforeunload", function() { window.history.replaceState( { value:"remember me"}, "", document.location.href + "?param=rememberme" ); });
});

试试看。我试图在beforeunload上更改当前url,这样我就可以在url中保留数据信息,这样当用户返回到页面时,他会用更改后的url重新加载页面,其中包含信息。

但它在页面重新加载时表现得很奇怪。chrome中的First-off window.history.state甚至不存在(还不支持?),因此在重新加载时无法获取状态。在页面重新加载时,url更改不会被重新记住。但如果你去了另一个网站,回来后网址的变化会被记住。

在firefox中存在window.history.state,并且在页面重载或历史转发/返回时,状态被正确地获取。但是url更改在页面重新加载时不起作用,每重新加载2次url就会正确更改。如果您前进/后退,url更改将得到正确处理。

有人知道如何使代码正确地用于页面重载(F5),如果chrome真的还不支持history.state?页面重新加载时的行为是否正确,或者浏览器处理得不好?

如果有人能在Safari上测试它,我很想知道它在那里是如何工作的。

只需在那里测试代码:http://www.braikar.com/stuff/test.html

您是否尝试过使用cookie来存储变量?你可以在加载前设置它,然后在加载时读取它。

最新更新