Javascript 历史事件-url的哈希(#)类型

Javascript 历史事件-url的哈希(#)类型,javascript,jquery,ajax,Javascript,Jquery,Ajax,首先,我对使用jquery插件不感兴趣。我只是想知道他们是如何做到的,这样我就可以创建一个这样的脚本 在html5历史记录中,我们使用window.onpopstate事件来检测后退/前进浏览器事件。我想要的是创建这样的东西,这样我就可以对其他不支持HTML5的浏览器使用哈希类型的url 大概是这样的: if(history.pushState){ //use html5 history event window.onpopstate = function(event){that._

首先,我对使用jquery插件不感兴趣。我只是想知道他们是如何做到的,这样我就可以创建一个这样的脚本

在html5历史记录中,我们使用
window.onpopstate
事件来检测后退/前进浏览器事件。我想要的是创建这样的东西,这样我就可以对其他不支持HTML5的浏览器使用哈希类型的url

大概是这样的:

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怪兽能指引我们前进

当IE7中发生“哈希更改”时,不会触发任何事件,这在本问题中有更好的描述


由于您对“jQuery解决方案”不感兴趣,我建议您阅读IE7最佳答案的上半部分。

当IE7中发生“哈希更改”时,不会触发任何事件,这在本问题中有更好的描述


由于您对“jQuery解决方案”不感兴趣,我建议您阅读IE7最佳答案的上半部分。

许多旧浏览器本机不支持哈希更改事件。我相信jQuery将此功能抽象到其事件侦听器中的方法是使用setInterval()不断轮询哈希更改。

许多旧浏览器本机不支持哈希更改事件。我相信jQuery将此功能抽象到其事件侦听器中的方法是使用setInterval()不断轮询哈希更改。

hashchange
事件分配一个事件处理程序到窗口,并为较旧的浏览器使用
setInterval
每隔100ms轮询
window.location.hash
,等等,因此,当hashchange不受支持时,您可以获得最新的hash

我还建议您编写链接、按钮等,以调用在mouseup上检查散列的函数,这样您就可以保证在单击更改散列的链接时几乎没有延迟


浏览器中的Hashchange支持:

Hashchange
事件分配一个事件处理程序到窗口,并为较旧的浏览器使用
setInterval
每隔100ms轮询
window.location.hash
等,因此当不支持Hashchange时,您可以获得几乎最新的hash

我还建议您编写链接、按钮等,以调用在mouseup上检查散列的函数,这样您就可以保证在单击更改散列的链接时几乎没有延迟


浏览器中的Hashchange支持:

“我只是想知道他们是如何实现的,这样我就可以创建这样的脚本。”-你考虑过阅读jquery插件的源代码吗?如果有什么不合理的地方,那么就在网上发布一个关于它的问题??“我只想知道他们是如何做到的,这样我就可以创建一个这样的脚本。”-你考虑过阅读jquery插件的源代码吗?如果有什么不合理的地方,那就在网上发一个问题,这样???这个主意行得通。但这不是一个好主意。因为如果我更改url,它将自动导航,因为设置间隔。即使链接无效,它也会自动导航,因此不建议使用此方法。@LeysamRosario所有库都是这样做的,这是唯一合理的方法(可能是唯一的方法)。由您来验证URL并按照自己的喜好行事。如果URL无效,您可以显示错误、忽略甚至自动完成URL。当您更改URL时,它会触发处理程序,这不是重点吗?没有办法限制URL,因为用户总是能够手动更改URL。这个想法很有效。但这不是一个好主意。因为如果我更改url,它将自动导航,因为设置间隔。即使链接无效,它也会自动导航,因此不建议使用此方法。@LeysamRosario所有库都是这样做的,这是唯一合理的方法(可能是唯一的方法)。由您来验证URL并按照自己的喜好行事。如果URL无效,您可以显示错误、忽略甚至自动完成URL。当您更改URL时,它会触发处理程序,这不是重点吗?没有办法限制URL,因为用户始终可以手动更改URL。