使用history.replaceState更改beforeunload上的url / state

时间:2012-01-14 23:27:07

标签: jquery html5

我已经找到了这个的答案,找不到一个,我想知道它是不是一个bug,似乎浏览器对这个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 window.history.state中的第一个关闭甚至不存在(尚不支持?),因此无法在重新加载时获取状态。并在页面重新加载网址更改不会重新编号。 但是,如果你去另一个网站然后回来,网址的更改就会被重新编号。

firefox window.history.state中存在

,并且在页面重新加载或历史向前/向后,状态被正确获取。但是网址重新加载时网址更改不起作用,网址每2次重新加载就会正确更改。如果你前进/后退,网址更改将被正确处理。

任何人都知道如何使代码正常运行以进行页面重新加载(F5)并且chrome是否仍然不支持history.state? 页面重新加载时行为是否正确,或浏览器是否处理不好?

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

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

1 个答案:

答案 0 :(得分:0)

您是否尝试使用Cookie存储变量?您可以在beforeunload中设置它并在加载时读取它。