javascript - would - Haciendo enlaces como Twitter, Hash-Bang#! URL''s
twitter share button (2)
Posible duplicado:
¿Para qué sirve el shebang / hashbang (#!) En Facebook y las nuevas URL de Twitter?
Me preguntaba cómo funciona Twitter sus enlaces.
Si busca en el código fuente, utiliza los enlaces que se realizan como / #! / I / connect o / #! / I / discover, pero no tienen una función de JavaScript asociada a ellos como load (''connect'') O algo así, y que no requiere recargar la página. Simplemente cambia el contenido de la página.
Vi this página, pero luego todos esos archivos tendrían que existir, y no se podía ir directamente a uno de ellos. Me imagino que en Twitter cada uno de esos archivos no existe, y que se maneja con algún otro método. Por favor, corrígeme si me equivoco, sin embargo.
¿Hay alguna manera de poder replicar este efecto? Si es así, ¿hay un tutorial sobre cómo hacer esto?
Es posible que desee ver más en URL únicas .
Está cargando la página a través de AJAX y analizando el "hash" (los valores que vienen después del "#") para determinar qué página se va a cargar. Además, este método se utiliza debido a la naturaleza que las solicitudes de AJAX no cuentan para el historial del navegador, por lo que el botón "Atrás se rompe". Pero el navegador, sin embargo, almacena en la historia los cambios de hash.
Al usar hashes más el hecho de que puede usarlos para determinar las páginas, puede decir que puede mantener las páginas solicitadas de AJAX "en el historial". Sumado a eso, las URL con hash son solo URL y se pueden marcar como el hash, así que también puedes marcar las páginas solicitadas por AJAX.
Navegación "Hash-Bang" , como a veces se llama, ...
http://whatever.com/path/to/#!/some-ajax-state
... es una solución temporal para un problema temporal que se está convirtiendo rápidamente en un no problema gracias a los estándares modernos del navegador. Con toda probabilidad, Twitter lo eliminará gradualmente, como ya lo está haciendo Facebook.
Es la combinación de varios conceptos ...
En el pasado, un enlace tenía dos propósitos : cargaba un documento nuevo y / o se desplazaba hacia abajo a un ancla incrustada como se indica con el hash (#).
http://whatever.com/script.php#fourth-paragraph
Cualquier cosa en una URL después del hash no fue solicitada desde el servidor, pero fue buscada en la página por el navegador. Todo esto todavía funciona bien.
Con la adopción de AJAX , el contenido nuevo podría cargarse en la página actual (ya cargada). Con esta carga dinámica, surgieron varios problemas : 1) no había una URL única para marcar o vincular a este nuevo contenido, 2) la búsqueda nunca la vería.
Algunas personas inteligentes resolvieron el primer problema utilizando el hash como una especie de referencia de "estado" que se incluiría en los enlaces y marcadores. Después de que se carga el documento, el navegador lee el hash y ejecuta las solicitudes de AJAX, mostrando la página más sus cambios dinámicos de AJAX.
http://whatever.com/script.php#some-ajax-state
Esto resolvió el problema de AJAX, pero el problema del motor de búsqueda todavía existía . Los motores de búsqueda no cargan páginas y ejecutan Javascript como un navegador.
Google al rescate. Google propuso un esquema donde cualquier URL con un hash-bang (#!) En lugar de solo un hash (#) sugeriría al robot de búsqueda que había una URL alternativa para la indexación, que incluía una variable "_escaped_fragment_", entre otras cosas. Lea sobre esto aquí ...
https://developers.google.com/webmasters/ajax-crawling/docs/getting-started
Hoy, con la adopción del pushstate de Javascript en la mayoría de los principales navegadores, todo esto se está volviendo obsoleto. Con pushstate, a medida que el contenido se carga o cambia dinámicamente, la URL de la página actual se puede modificar sin causar una carga de página. Cuando se desee, esto proporciona una URL de trabajo real para los marcadores y el historial. Los enlaces se pueden hacer como siempre, sin hashes y hash-bangs .
A partir de hoy, si carga Facebook en un navegador anterior, verá el hash-bangs, pero un navegador actual demostrará el uso de pushstate.