【发布时间】:2012-02-10 13:59:04
【问题描述】:
我一直在寻找这个问题的答案,找不到一个,我想知道这是一个错误,似乎浏览器对这个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 甚至不存在(还不支持?),因此无法在重新加载时获取状态。并且在页面重新加载时不会记住 url 更改。
但是,如果您转到另一个站点并返回,则会记住 url 更改。
在 Firefox 中 window.history.state 存在并且在页面重新加载或历史前进/后退时,状态被正确获取。但是 url 更改在页面重新加载时不起作用,url 每 2 次重新加载正确更改。如果您前进/后退,将正确处理 url 更改。
任何人都知道如何使该代码在页面重新加载时正常工作(F5),如果 chrome 真的仍然不支持history.state?
页面重新加载时的行为是否正确,或者浏览器是否处理得不好?
如果有人可以在 Safari 上对其进行测试,我很想知道它在那里是如何工作的。
只需测试那里的代码:http://www.braikar.com/stuff/test.html
【问题讨论】:
-
对我来说,它似乎每次在 Firefox 中都能正常工作,但在其他(Safari、Opera、Chrome)中,它会更改历史中的 URL,但“记住我”的内容并未添加到 div .在 IE 中它根本不起作用 - 那就不足为奇了!
-
使用 HTML 5 需要注意的一个好网站是 html5test.com - 它的历史似乎不是那么好,但在某些时候您可能还需要了解许多其他内容.编辑:现在我明白了你对它在 Firefox 中每次重新加载时的意思是什么,我只是在单击链接时检查。
-
我什至不介意 IE .. 我原以为它不会工作 ;) 我正在提前制作一个 cms 系统,这就是为什么我只想了解是否历史行为是正确的,或者是浏览器还没有很好地实现它。根据developer.mozilla.org/en/DOM/Manipulating_the_browser_history,该行为应该在页面重新加载时正常工作,因为我正在更改页面重新加载之前的状态..