Jquery HTML5应用程序路由,pushState

Jquery HTML5应用程序路由,pushState,jquery,html,routing,pushstate,Jquery,Html,Routing,Pushstate,我试着做两件事: 使用pushState更改URL //Video $("a").click(function(){ history.pushState(null, "Video", "/video/"); return false; }); 然后,如果有人在浏览器中键入div,则可以路由该链接以显示div: www.mysite.com/video/ ---> show div 我一直在看一些脚本:davis.js、sammy.js、history.js 我需要这些脚本吗?jQuer

我试着做两件事:

使用pushState更改URL

//Video
$("a").click(function(){
history.pushState(null, "Video", "/video/");
return false;
});
然后,如果有人在浏览器中键入div,则可以路由该链接以显示div:

www.mysite.com/video/ ---> show div
我一直在看一些脚本:davis.js、sammy.js、history.js


我需要这些脚本吗?jQuery中有什么方法可以做到这一点吗?

我有点偏见,因为我是Davis.js的作者,但我认为使用Davis.js或Sammy.js这样的路由库是实现这一点的最简单方法。这两个库都有代码来管理单击链接时发生的事情,或者使用后退和前进按钮在状态和历史API的所有其他特性之间导航

如果您想要一些非常简单的东西,那么您可以自己编写一些东西,尽管这可能比只使用lib要花费一些时间

以下是您可以做的大致想法:

$("a").click(function (e) {
  e.preventDefault()
  var link = $(this)
  history.pushState({pushedByMe: true}, link.attr('title'), link.attr('href'))
  yourCodeHere()
})

history.onpopstate = function (event) {
 if (!event.state.pushedByMe) return
 yourCodeHere()
}

因为我是Davis.js的作者,所以我有点偏颇,但我认为使用Davis.js或Sammy.js这样的路由库是实现这一点的最简单方法。这两个库都有代码来管理单击链接时发生的事情,或者使用后退和前进按钮在状态和历史API的所有其他特性之间导航

如果您想要一些非常简单的东西,那么您可以自己编写一些东西,尽管这可能比只使用lib要花费一些时间

以下是您可以做的大致想法:

$("a").click(function (e) {
  e.preventDefault()
  var link = $(this)
  history.pushState({pushedByMe: true}, link.attr('title'), link.attr('href'))
  yourCodeHere()
})

history.onpopstate = function (event) {
 if (!event.state.pushedByMe) return
 yourCodeHere()
}