1

我正在尝试做两件事:

使用 pushState 更改 URL

//Video
$("a").click(function(){
history.pushState(null, "Video", "/video/");
return false;
});

然后能够路由该链接以显示一个 div,如果有人在他们的浏览器中键入它:

www.mysite.com/video/ ---> show div

我一直在看一些脚本:davis.js、sammy.js、history.js

我需要这些脚本吗?jQuery中有没有办法做到这一点?

4

1 回答 1

5

因为我是 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()
}
于 2011-08-18T12:11:10.860 回答