在仅有网址哈希值改变而浏览器不会与服务器通讯或重新加载页面时,是否有一种方式能够在JavaScript中响应后退按钮(或按下退格键)的操作?
在仅有网址哈希值改变而浏览器不会与服务器通讯或重新加载页面时,是否有一种方式能够在JavaScript中响应后退按钮(或按下退格键)的操作?
hashchange
事件:window.addEventListener("hashchange", function(e) {
// ...
})
如果你需要支持旧版浏览器,请查看Modernizr的HTML5跨浏览器补丁维基页面中的hashChange
事件部分。
var pageload = {
ignorehashchange: false,
loadUrl: function(){
if (pageload.ignorehashchange == false){
//code to parse window.location.hash and load content
};
}
};
接着,我在我的网站脚本中添加了一行代码来在hashchange事件发生时运行pageload.loadUrl
函数,代码如下:
window.addEventListener("hashchange", pageload.loadUrl, false);
那么,每当我想修改window.location.hash
时,而不触发页面加载程序,我只需在每个window.location.hash =
行之前添加以下行:
pageload.ignorehashchange = true;
在每个哈希修改行后加上以下行:
setTimeout(function(){pageload.ignorehashchange = false;}, 100);
现在我的部分加载程序通常在运行,但如果用户点击“后退”或“前进”按钮,新位置将被解析并加载相应的部分。
onLocationChange
可能也很有用。不确定这是否只适用于Mozilla,看起来可能是。