Compensation URL de hachage
Visite stackoverflow.com/#_=_
et window.location.hash
évalue à #_=_
. Des beaux.
Maintenant exécuter window.location.hash = ''
pour effacer la table de hachage, et l'URL devient stackoverflow.com/#
. (Avis de fuite #
.)
Pourquoi le #
dans window.location.hash
de façon incohérente inclus ou exclus? Comment peut - #
être supprimé à partir de l'URL sans avoir à recharger la page?
(MDN dit
[le hachage est] la partie de l'URL qui suit le symbole#, y compris le symbole#.
mais ce n'est pas vrai dans le cas d'un hachage vide.)
- Avec quel navigateur avez-vous observé ce comportement?
- la visite de
stackoverflow.com/#
également les résultats enwindow.location.hash === ''
c'est donc un comportement cohérent. - Vous dites que la manipulation de
hash
avec JavaScript conduit à#
dans l'URL et videhash
de la propriété. Maintenant en visitant la page avec seulement#
dans l'URL conduit également à videhash
de la propriété.hash
propriété est rempli uniquement quand il y a d'autres personnages après#
dans l'URL et c'est un comportement cohérent dans tous les navigateurs. - Il me semble que IE ne comprend pas le '#' dans le cadre de l'emplacement.hachage -- juste pour signaler quelques autres incohérence...
- ie semble ajouter fichier "/// " au début lors de l'ajout d'un # à la fin de l'url
- Double Possible de Comment faire pour supprimer le hachage de la fenêtre.adresse (URL) avec du JavaScript sans rafraichissement de la page?
Vous devez vous connecter pour publier un commentaire.
Pour répondre à la deuxième question (la suppression de la
#
sans rafraichissement de la page):replaceState
pour atteindre cet objectif.window.location.href.replace( /#.*/, "");
mais il recharge la page.Répondre à votre première question:
Selon la de la fenêtre.emplacement doc dans Mozilla.org: "la partie de l'URL qui suit le symbole#, si il y en a un, y compris le symbole#. Chaîne vide si l'url ne contient pas de # ou n'a rien après le #."
Curieusement, ce document a été mis à jour sur 4/8/2013. Pas sûr que cela a été ajouté après que vous avez vérifié la documentation.
Par la voie (et en référence à l'réponses), la fenêtre.emplacement.hachage et pushState sont des concepts différents, bien que proche liés.
Il y a 2 choses la conduite de ce comportement:
Donc, fondamentalement, le réglage de la valeur de hachage de la propriété ne doit jamais conduire à un rechargement, les autres biens qui devrait conduire à un reload (ou peut-être un E-Tag/modifiée depuis en-tête de vérifier, en fonction des paramètres du navigateur).
Je suppose que, par souci de cohérence, le navigateur, les constructeurs de transformer la fixation d'un hachage vide, à l'établissement de " # " comme de hachage. De cette façon, l'url dans la barre d'adresse ne conduit pas à un rechargement. Mais cette dernière partie est de la pure spéculation.
J'ai été aux prises avec le même problème il y a deux semaines et ma conclusion a été qu'il n'y a pas de bonne solution. Il n'y a pas de solution directe, en supprimant le hash de l'URL de toujours forcé le navigateur à recharger la page, et même si il y avait un unpretty hack-comme solution, je préférerais avoir le hachage à la fin de l'url de l'aide obscur solutions.