FB 如何在不重新加载页面的情况下刷新页面(xmlHttpRequest)但后退/前进按钮仍然照常工作?
这与使用history.pushState()
方法无关。PushState()
仅更改 URL 字符串,但在单击后退按钮后不会获取以前的页面。所以有点不一样。
这是我的代码和示例。
我有这样的网站(看下面的图片)。Header-div 和 Content-div。在你第一次打开它的开始时,URL是mysite.com/page1.php.
我想改变Content-div中的内容而不重新加载页面。新信息应该出现在 Content-div 中。并且 URL 应更改为mysite.com/page2.php
.
这是HTML代码。
<div id="content"></div>
<a href="" id="relaodLink">Reload Content</a>
这是它的JS代码。
document.getElementById("relaodLink").onclick = function() {
var xmlHttp = new XMLHttpRequest();
xmlHttp.open("GET", "page2.php", true);
xmlHttp.send();
xmlHttp.onreadystatechange = function() {
if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {
document.getElementById("content").innerHTML = xmlHttp.responseText;
}
}
return false;
}
所以 Header 不应该在按下后重新加载relaodLink
,只是 Content-div 中的内容发生了变化。最重要的是:URL 应该改变,就像页面真的重新加载一样。后退按钮允许转到mysite.com/page1.php
,然后前进按钮允许mysite.com/page2.php
再次返回。使用history.pushState()
方法它不起作用。但在 FB 后退和前进按钮工作正常。怎么做?
(来源:ljplus.ru)