Réécriture document.location sans chargement
-
05-10-2019 - |
Question
Je développe un système qui est 100% ajax, sauf bien sûr, la première demande.
Je suis intéressé à changer l'adresse dans document.location, en utilisant javascript. Mais je ne veux pas le navigateur pour charger la page sur cet emplacement « nouveau ».
Est-ce que quelqu'un sait comment je peux le faire?
La solution
Réécrire l'emplacement entier et pas seulement la partie « hachage », API historique du navigateur peut être utilisé, même si actuellement il semble être pris en charge dans Gecko 1.9.3 / Firefox 4 .
history.replaceState({}, document.title, url)
Autres conseils
Modification de l'URL entière sans navigation est impossible, imaginez problèmes de sécurité que pourrait générer.
Vous pouvez modifier uniquement les location.hash
, qui est la partie de l'URL qui suit le symbole #
:
location.hash = "foo";
Votre URL changera http://someurl.com/#foo
Vous pouvez utiliser la même méthode que Gmail utilise. Append un point d'ancrage à la fin de l'URL, le navigateur ne doit pas recharger la page, mais vous pouvez lire les informations contenues dans document.location.href
et agir sur elle. Cela gardera également la fonctionnalité du bouton de retour intact (fournissant vos supports javascript il)
par exemple
première page est http://www.mypage.com/index.php
vous cliquez sur la « page » suivante en utilisant <a href="#page2">link</a>
et il change à http://www.mypage.com/index.php#page2