首先我对使用一些jquery插件不感兴趣。我只是想知道他们是如何实现它的,所以我可以创建一个这样的脚本。
在html5历史记录中,我们使用window.onpopstate
事件来检测后退/前进浏览器事件。我想要的是创建这样的东西,这样我就可以将哈希类型的url 用于其他不支持html 5的浏览器
类似的东西:
if(history.pushState){
//use html5 history event
window.onpopstate = function(event){that.__loadCurrentLink();};
}else{
//use the History event for other browser
window.historyEvent = function(event){that.__loadCurrentLink();};
}
你们可以提供一些暗示或任何内容,以便我知道如何做到这一点。
我只是为了学习目的和其他想知道如何做到这一点的人这样做。我希望一些javascript怪物可以带领我们前进。
答案 0 :(得分:3)
为hashchange
事件分配一个事件处理程序到窗口,并使用setInterval
为旧浏览器每隔100毫秒轮询window.location.hash
等,所以当不支持hashchange时,你可以得到几乎是最新的哈希。
我还建议编写你的链接,按钮等来调用检查mouseup上的哈希的函数,这样当你点击改变哈希的链接时你几乎没有延迟。
浏览器中的Hashchange支持:caniuse.com
答案 1 :(得分:0)
在IE7中发生“哈希更改”时,不会触发任何事件,在此问题中有更好的描述。
On - window.location.hash - change?
由于您对“jQuery解决方案”不感兴趣,我建议您阅读IE7最佳答案的顶部。
答案 2 :(得分:0)
许多旧版浏览器本身不支持哈希更改事件。我相信jQuery将这个功能抽象到它们的事件监听器中的方式是使用setInterval()来不断轮询散列更改。