Je développe une application Web. Dans celui-ci, j'ai une section appelée catégories que chaque fois qu'un utilisateur clique sur l'une des catégories, un panneau de mise à jour charge le contenu approprié.
Une fois que l'utilisateur a cliqué sur la catégorie, je souhaite modifier l'URL de la barre d'adresse du navigateur
www.mysite.com/products
à quelque chose comme
www.mysite.com/products/{selectedCat}
sans actualiser la page.
Existe-t-il une sorte d'API JavaScript que je peux utiliser pour y parvenir?
la source
path
et / ouquery string
dans l'URL; ils ne peuvent pas changer le protocole, le domaine ou le port (car ce serait un problème de sécurité comme d'autres l'ont souligné). Lahash
fonction ci-dessus peut changer l'ancre (ou l'identifiant du fragment)Pour ajouter à ce que les gars ont déjà dit, modifiez la propriété window.location.hash pour qu'elle corresponde à l'URL que vous voulez dans votre fonction onclick.
la source
Je pense que manipuler directement la barre d'adresse vers une URL complètement différente sans passer à cette URL n'est pas autorisé pour des raisons de sécurité, si vous en êtes satisfait.
www.monsite.com/products/#{selectedCat}
c'est-à-dire un lien de style ancre dans la même page, puis regardez dans les divers scripts d'historique / "bouton retour" qui sont maintenant présents dans la plupart des bibliothèques javascript.
La mention du panneau de mise à jour m'amène à deviner que vous utilisez asp.net, dans ce cas, le contrôle d'historique ajax asp.net est un bon point de départ
la source
Je ne pense pas que cela soit possible (au moins changer pour une adresse totalement différente), car ce serait une mauvaise utilisation non intuitive de la barre d'adresse et pourrait favoriser les attaques de phishing.
la source
Cela ne peut pas être fait comme vous le dites. La méthode suggérée par somej.net est la plus proche que vous puissiez obtenir. C'est en fait une pratique très courante à l'ère AJAX. Même Gmail l'utilise.
la source
comme suggéré par sanchothefat devrait être la seule et unique façon de le faire. Parce que tous les endroits où j'ai vu cette fonctionnalité, c'est tout le temps après le # in URL.
la source