HTML5 / jQuery: pushState e popState - links diretos?
first off Parece que não consigo descobrir para que serve o primeiro parâmetro na função pushState? O que eu passo para ele? Eu simplesmente quero alterar o URL ao rolar pela minha página. Estou consultando o ID do elemento atual na viewport e seu ID também deve ser o link no URL. Isso funciona bem com o código abaixo.
var currentHash,
url;
if (history && history.pushState) {
$(window).scroll(function() {
hash = $('.layer:in-viewport').attr('id');
catHash = $("#"+hash).parent('section').attr('id');
var data = "nothing";
if ( catHash != undefined )
url = "/" + catHash + "/" + hash;
else
url = "/" + hash;
if ( currentHash != hash ) {
window.history.pushState(data, hash, url);
}
currentHash = hash;
});
}
gora tenho duas perguntas:
1.) No momento, o URL na barra de endereços muda com sucesso quando eu rolar pela minha página. Como posso consultar o URL / hash na barra de endereços quando carrego a página inicialmente. Imagine agora que tenho um link comowww.url.com/deep
Eu quero descobrir o que é / profundo? Eu simplesmente preciso consultar todo o top.location e dividi-lo em cada "/"? Quero dizer, esses links realmente não existem, então como evitar 404 páginas ao chamar um URL que eu manipulei com a função pushState?
2.) Como posso descobrir a última alteração na barra de endereços ao clicar no botão Voltar? Então, eu quero encontrar/deep
ao clicar no botão voltar do navegador para que eu possa voltar para essa posição na página. Acho que isso provavelmente está funcionando com o popstate, mas não consegui descobrir como!
Obrigado pela ajuda
Atualizar
window.history.pushState("test", hash, url);
…
$(window).bind('popstate', function(event){
console.log(event.data);
});
Isso é sempre nulo. Este retorno não deve "testar"?