J'essaye de tout supprimer après le "?" dans l'url du navigateur sur le document prêt.
Voici ce que j'essaye:
jQuery(document).ready(function($) {
var url = window.location.href;
url = url.split('?')[0];
});
Je peux le faire et le voir fonctionne ci-dessous:
jQuery(document).ready(function($) {
var url = window.location.href;
alert(url.split('?')[0]);
});
javascript
jquery
Derek
la source
la source
.ready()
? Vous n'avez pas besoin d'attendre pour rediriger vers une nouvelle URL ou simplement utiliser.pushState()
comme Joraid recommandé.Réponses:
TL; DR
1- Pour modifier l' URL en cours et ajouter / inject il (la nouvelle URL modifiée) comme une nouvelle entrée d'URL à la liste de l' historique, l' utilisation
pushState
:2- Pour remplacer l'URL actuelle sans l'ajouter aux entrées d'historique, utilisez
replaceState
:3- En fonction de votre logique métier ,
pushState
sera utile dans des cas tels que:vous souhaitez prendre en charge le bouton de retour du navigateur
vous voulez créer une nouvelle URL, ajouter / insérer / pousser la nouvelle URL vers les entrées d' historique et en faire l'URL actuelle
permettre aux utilisateurs de mettre en signet la page avec les mêmes paramètres (pour afficher le même contenu)
par programmation accéder aux données par l'
stateObj
analyser puis de l'ancreComme je l'ai compris de votre commentaire, vous souhaitez nettoyer votre URL sans rediriger.
Notez que vous ne pouvez pas modifier toute l'URL. Vous pouvez simplement changer ce qui vient après le nom du domaine. Cela signifie que vous ne pouvez pas changer
www.example.com/
mais que vous pouvez changer ce qui vient après.com/
Contexte
On peut utiliser:
1- La méthode pushState () si vous souhaitez ajouter une nouvelle URL modifiée aux entrées d'historique.
2- La méthode replaceState () si vous souhaitez mettre à jour / remplacer l' entrée actuelle de l' historique.
Code
Pour ce faire, j'utiliserai la méthode pushState () pour cet exemple qui fonctionne de manière similaire au format suivant:
N'hésitez pas à remplacer
pushState
par enreplaceState
fonction de vos besoins.Vous pouvez remplacer le paramètre
"object or string"
par{}
et"Title"
pardocument.title
ainsi la déclaration finale deviendra:Résultats
Les deux lignes de code précédentes créeront une URL telle que:
Devenir:
action
Essayons maintenant une approche différente. Disons que vous devez conserver le nom du fichier. Le nom de fichier vient après la dernière
/
et avant la chaîne de requête?
.Sera:
Quelque chose comme ça le fera fonctionner:
METTRE À JOUR:
Pour les fans d'un seul liner, essayez ceci dans votre console / firebug et cette URL de page changera:
L'URL de cette page changera de:
À
Remarque: comme Samuel Liew l'a indiqué dans les commentaires ci-dessous, cette fonctionnalité n'a été introduite que pour
HTML5
.Une autre approche consisterait à rediriger réellement votre page (mais vous perdrez la chaîne de requête «?», Est-elle toujours nécessaire ou les données ont-elles été traitées?).
la source
replaceState
semble être un meilleur ajustement, maispushState
fonctionnera également, c'est-à-dire jusqu'à ce que vous commenciez à cliquer sur les boutons Précédent et Suivant dans le navigateur et que vous vous rendiez compte qu'il y a une raison pour laquelle il existe des bibliothèques entières pour travailler avec l'API History.url.substring(url.lastIndexOf('/') + 1);
.url.split("?")[0]
obtiendra la partie avant le premier point d'interrogation qui est tout ce que je pense que le PO a demandé. La question du PO demande: "J'essaye de tout supprimer après le"? "Dans l'URL du navigateur".Tout cela est trompeur, vous ne voulez jamais ajouter à l'historique du navigateur à moins que vous ne souhaitiez accéder à une page différente dans une seule application. Si vous souhaitez supprimer les paramètres sans modification de la page, vous devez utiliser:
la source
un moyen simple de le faire, fonctionne sur n'importe quelle page, nécessite HTML 5
la source
Je crois que la méthode la meilleure et la plus simple pour cela est:
la source
si j'ai une balise spéciale à la fin de mon URL comme: http://domain.com/?tag=12345 Voici le code ci-dessous pour supprimer cette balise chaque fois qu'elle se présente dans l'URL:
Cela donne l'idée de supprimer un ou plusieurs (ou tous) paramètres de l'URL
Avec window.location.pathname, vous obtenez en gros tout avant '?' dans l'url.
la source
Je voulais supprimer un seul paramètre
success
. Voici comment procéder:Cela conserve également
#hash
.URLSearchParams
ne fonctionnera pas sur IE, mais en cours de travail pour Edge . Vous pouvez utiliser un polyfill ou un peut utiliser une fonction d'assistance naïve pour le support IE:Cela peut être utilisé comme:
la source
take_param
fait déjà, mais vous pouvez faire leURLSearchParams
faire la même chose en faisant:history.replaceState(null, '', (params ? '?' + params : '') + location.hash)
. Ou comme vous le souhaitez.Meilleure solution:
la source
Aucune de ces solutions n'a vraiment fonctionné pour moi, voici une fonction compatible IE11 qui peut également supprimer plusieurs paramètres:
la source
la source
Pour effacer tous les paramètres, sans actualiser la page, ET si vous utilisez HTML5, vous pouvez le faire:
history.pushState({}, '', 'index.html' ); //replace 'index.html' with whatever your page name is
Cela ajoutera une entrée dans l'historique du navigateur. Vous pouvez également envisager
replaceState
si vous ne souhaitez pas ajouter une nouvelle entrée et souhaitez simplement remplacer l'ancienne entrée.la source
Dans jquery, utilisez <
la source
Voici un ES6 one liner qui préserve le hachage de l'emplacement et ne pollue pas l'historique du navigateur en utilisant
replaceState
:la source
location
aka globalwindow.location
, donc la fonction a accès aux globalslocation
carl
le reste est de base replaceState comme dans toutes les autres réponses, il concatène le chemin et le hachage (example.com/#hash) en tant que nouvelle URL. J'espère que c'est digeste, sinon faites le moi savoir 😉window.history.replaceState({}, '', location.pathname + location.hash)
? ;)location
2 fois 😁 mais vous n'avez pas besoin de l'attribuer à une variable 😉 ou y a-t-il plus à lui Joey?