Pergunta

O Gmail usa # quando você clica em um e-mail para distinguir a página (ação + Ajax). http://mail.google.com/mail/#inbox/1238e709e37a1394

eu encontrei: Google usando # em vez de pesquisa? na URL. Por quê?

Em FF ou Chrome você pode usar para avançar e voltar sem atualização entre estes urls: http://X.com/MyPage.aspx#1 http://X.com/MyPage.aspx#2 http://X.com/MyPage.aspx#3

Mas no IE a página de atualização e não conta os parâmetros após # quando uma ação de volta é feita.

Como o Gmail fazer a mágica acontece?

Foi útil?

Solução 2

Isto é o que eu estava procurando: http://nix.lv/history/demo.html#3

encontrou em: Salvar a âncora na história IE6

Outras dicas

Eu posso dar-lhe a resposta para isso, porque eu tenho enfrentado e resolvido este problema.

Existem alguns conceitos para entender aqui primeiro:

  1. javascript não pode alterar o histórico do navegador diretamente.
  2. sempre que o URL base de um iframe nas mudanças de página, a história é atualizado. (Mas isso tem algumas peculiaridades com diferentes browsers).
  3. a url tem uma parte "hash": por exemplo, na http://mail.google.com/mail#inbox URL, #inbox é a parte hash. Vamos chamá-lo de "haxixe". assim http://mail.google.com/mail será nosso "URL base".

história de rastreamento por GMail é principalmente feita usando truques com base nesta "haxixe".

Assim, mais alguns conceitos:

  1. quando a URL na barra muda de endereço, a história é atualizado (a URL anterior vai para a história)
  2. quando o URL base é alterado, a página é recarregada.
  3. quando a parte hash da URL muda sem a URL base mudando, a página não é recarregado.

Então, quando você vai de http://mail.google.com/mail#inbox para http://mail.google.com/mail#sent, a página não refrescar .

Agora, se GMail fosse para obter uma notificação de evento quando o hash alterado, então gmail poderia tomar ações com base nisso. Infelizmente, não há eventos DOM que podem nos ajudar a capturar ações de história. Então, em vez (esta é a parte que mostra como eu superei o problema), corremos um loop infinito que verifica a existência de alterações no hash. Se observa uma mudança, então nós detectamos um clique para o "back" ou "forward" botão do navegador.

Ao resolver este, eu fiz uma ferramenta útil: URL analisador . Ele pode analisar GET parâmetros na URL, bem como parâmetros codificado no Hash. Dê a demo um go!

Felicidades!


Sobre este problema no IE: Eu não percebi que a solução baseada esta 'de hash' não funciona no IE (coitado do desenvolvedor linux).

Mas para o IE, você pode usar um iframe escondido, e usar o seu "url afeta história" propriedade para implementar história. Sei que esta afirmação carece de detalhes, mas que decorre da minha própria falta de experiência com o IE.

vou tentar esta solução, e acompanhamento:)

Eu encontrei uma série de links na internet, que fazem implementações adequadas de história usando iframe / localização hash. Eu não tinha paciência para desenterrar as diferenças entre interface de iframe em vários browsers.

Eu acho que eu preferiria o plugin jQuery . YUI tem um gerente de história também.

Felicidades!

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top