8
votes

Comment supprimer des paramètres de l'URL et l'afficher dans la barre d'adresse sans causer de rediriger dans JavaScript?

J'ai trouvé de nombreuses réponses sur la manière d'extraire l'URL sans les paramètres.

Comment réécrivez-vous l'URL dans la barre d'adresse sans amener la page à recharger avec la nouvelle URL? P>

shortURL = top.location.href.substring(0, top.location.href.indexOf('?'));
top.location.href = shortURL // Causes redirect


0 commentaires

5 Réponses :


12
votes

Dans les navigateurs modernes avec prise en charge de l'objet Historique, vous pouvez utiliser soit Historique.replaCestate () ou historique.pushstate () Pour changer l'URL actuelle sans changer le page actuelle. Il existe des limitations sur ce que vous pouvez modifier (par exemple, vous ne pouvez pas modifier le domaine / origine de cette façon pour des raisons de sécurité).

voir ici pour un résumé de ces méthodes.

L'historique du navigateur est un enregistrement de l'endroit où vous avez été dans votre session de navigation. .ReplaState () Vous permet de remplacer l'élément actuel de la liste d'historique avec un autre. .pushstate () ajoute un nouvel élément à l'historique du navigateur et modifie les deux l'URL affichée dans la barre d'URL du navigateur sans recharger la page. Vous sélectionnez la méthode à utiliser en fonction de la manière dont vous souhaitez que le bouton "Retour" du navigateur se comporte pour cette entrée de page particulière.

Remarque: ces API sont prises en charge dans IE 10 et ultérieures.

Dans les versions de navigateur plus anciennes sans prise en charge de l'API d'historique, la seule partie de l'URL que vous pouvez modifier sans recharger la page est la balise de hachage (la pièce après un # symbole) à la fin de l'URL.


2 commentaires

N'est plus une réponse correcte avec l'avènement de HTML5 et de pousstite (plus ici )


@FloatiningRock - Mise à jour de la réponse pour HTML5 .ReplaCestate () et .pustate () .



0
votes

Je ne pense pas qu'il y ait une possibilité pour cela, je veux dire que vous pourriez probablement réécrire l'URL après sa chargement et ajouter de retour false, vous empêchez la recharge mais sinon vous devriez faire un poste de formulaire sur l'URL. Pour atteindre ce paramètre, aucun paramètre n'est affiché.


0 commentaires

2
votes

Vous ne pouvez pas modifier la valeur dans la barre d'adresse sans rediriger. Ce serait un rêve de phishing Scamer devenu réalité!

Vous pouvez, cependant, changer le identifiant de fragment : (En JavaScript, la fenêtre window.location.Location valeur) xxx

mais la modification de la chaîne de requête redirigera la page.


0 commentaires


6
votes

Dans HTML5, URL de réécriture sans rechargement de la page est possible (vous ne pouvez toujours pas modifier le nom de domaine pour des raisons de sécurité), à l'aide d'Historique API, vous pouvez écrire: XXX

dans lequel le premier Deux paramètres sont en quelque sorte arbitraires et le troisième paramètre est la nouvelle URL (non compris le nom de domaine). Si vous souhaitez activer le bouton arrière pour revenir à l'URL précédente, utilisez pushstate au lieu de remplacer ci-dessus. En savoir plus sur ces fonctions dans ce Publication du blog .

Concernant le support du navigateur, il est pris en charge dans les dernières versions de Firefox et de chrome, mais uniquement dans IE10 +, qui n'est pas encore très fréquente. Pour plus de détails, voir matrice de compatibilité ou Détails de la mise en œuvre du navigateur .


0 commentaires