HTML5-маршрутизация приложений, pushState - PullRequest
1 голос
/ 09 августа 2011

Я пытаюсь сделать две вещи:

Используйте 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?

1 Ответ

5 голосов
/ 18 августа 2011

Я слегка предвзят, так как я являюсь автором Davis.js, но я думаю, что использование библиотеки маршрутизации, такой как Davis.js или Sammy.js, является самым простым способом сделать это.Обе библиотеки имеют код для управления тем, что происходит при нажатии на ссылку или при использовании кнопок «назад» и «вперед» для перемещения между состояниями и всеми другими особенностями API истории.

Если вы хотите что-то действительно простое, тогда вы можетекодируйте что-нибудь самостоятельно, хотя это может занять немного больше времени, чем просто использование библиотеки.

Вот примерное представление о том, что вы можете сделать:

$("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()
}
...