L'octothorpe / numéro-signe / hashmark a une signification particulière dans une URL, il identifie normalement le nom d'une section d'un document. Le terme précis est que le texte qui suit le hachage est la partie d' ancrage d'une URL. Si vous utilisez Wikipedia, vous verrez que la plupart des pages ont une table des matières et vous pouvez passer aux sections du document avec une ancre, telles que:
https://en.wikipedia.org/wiki/Alan_Turing#Early_computers_and_the_Turing_test
https://en.wikipedia.org/wiki/Alan_Turing
identifie la page et Early_computers_and_the_Turing_test
constitue l'ancre. La raison pour laquelle Facebook et d'autres applications Javascript (comme mes propres Wood & Stones ) utilisent des ancres est qu'elles veulent rendre les pages marquables (comme suggéré par un commentaire sur cette réponse) ou soutenir le bouton de retour sans recharger la page entière à partir du serveur .
Afin de prendre en charge les signets et le bouton de retour, vous devez modifier l'URL. Cependant, si vous modifiez la partie de la page (avec quelque chose comme window.location = 'http://raganwald.com';
) vers une URL différente ou sans spécifier une ancre, le navigateur chargera la page entière à partir de l'URL. Essayez ceci dans Firebug ou la console Javascript de Safari. Charge http://minimal-github.gilesb.com/raganwald
. Maintenant, dans la console Javascript, tapez:
window.location = 'http://minimal-github.gilesb.com/raganwald';
Vous verrez la page s'actualiser à partir du serveur. Tapez maintenant:
window.location = 'http://minimal-github.gilesb.com/raganwald#try_this';
Ah! Pas de rafraîchissement de page! Type:
window.location = 'http://minimal-github.gilesb.com/raganwald#and_this';
Toujours pas de rafraîchissement. Utilisez le bouton de retour pour voir que ces URL sont dans l'historique du navigateur. Le navigateur remarque que nous sommes sur la même page mais que nous changeons simplement l'ancre, donc il ne se recharge pas. Grâce à ce comportement, nous pouvons avoir une seule application Javascript qui apparaît au navigateur comme étant sur une 'page' mais ayant de nombreuses sections pouvant être mises en signet qui respectent le bouton de retour. L'application doit changer l'ancre lorsqu'un utilisateur entre dans différents `` états '', et de même si un utilisateur utilise le bouton de retour ou un signet ou un lien pour charger l'application avec une ancre incluse, l'application doit restaurer l'état approprié.
Donc, vous l'avez: les ancres fournissent aux programmeurs Javascript un mécanisme pour créer des applications pouvant être mises en signet, indexables et compatibles avec les boutons de retour. Cette technique a un nom: il s'agit d'une interface à page unique .
ps Il existe un quatrième avantage à cette technique: charger le contenu d'une page via AJAX puis l'injecter dans le DOM actuel peut être beaucoup plus rapide que de charger une nouvelle page. En plus de l'augmentation de la vitesse, d'autres astuces comme le chargement de certaines parties en arrière-plan peuvent être effectuées sous le contrôle du programmeur.
pps Compte tenu de tout cela, le «coup» ou le point d'exclamation est un indice supplémentaire pour le robot d'exploration de Google que la même page exacte peut être chargée à partir du serveur à une URL légèrement différente. Voir Ajax Crawling . Une autre technique consiste à faire en sorte que chaque lien pointe vers une URL accessible au serveur, puis à utiliser du Javascript discret pour le transformer en un SPI avec une ancre.
Voici à nouveau le lien clé: le manifeste d'interface à page unique
shebang
était ... en.wikipedia.org/wiki/Shebang_%28Unix%29