Création d'un nouvel objet de localisation dans JavaScript
-
13-09-2020 - |
Question
est-il possible de créer un nouvel objet de localisation dans JavaScript?J'ai une URL comme une chaîne et je voudrais tirer parti de ce que Javascript fournit déjà un accès aux différentes parties de celui-ci.
Voici un exemple de ce dont je parle (je sais que cela ne fonctionne pas):
var url = new window.location("http://www.example.com/some/path?name=value#anchor");
var protocol = url.protocol;
var hash = url.hash;
// etc etc
est quelque chose comme ça possible ou devrais-je essentiellement créer cet objet moi-même?
La solution
Eh bien, vous pouvez utiliser un élément d'ancrage pour extraire les pièces d'URL, par exemple:
var url = document.createElement('a');
url.href = "http://www.example.com/some/path?name=value#anchor";
var protocol = url.protocol;
var hash = url.hash;
alert('protocol: ' + protocol);
alert('hash: ' + hash);
Cela fonctionne sur tous les navigateurs modernes et même sur IE 5,5 +.
Vérifiez un exemple ici .
Autres conseils
Que diriez-vous d'utiliser la standard objet URL ?
var url = new URL("http://www.example.com/some/path?name=value#anchor");
var protocol = url.protocol;
var hash = url.hash;
Vous pouvez tirer parti de la puissance d'un élément d'ancrage
var aLink = document.createElement("a");
aLink.href="http://www.example.com/foo/bar.html?q=123#asdf";
alert(aLink.pathname);
Vous pouvez l'analyser dans une regex pour obtenir les pièces comme des matchs ... Je n'ai pas le code complet en ce moment, mais cela peut être utilisé pour obtenir le QueryData:
var myUrl = window.location.href;
var matches = myUrl.match(/([^\?]+)\?(.+)/);
var queryData = matches[2];
Correspondances [0] est la chaîne complète, les correspondances (1) est la première partie de l'URL (jusqu'à la?) ... Vous pouvez construire une expression régulière pour analyser chaque partie d'une URL de chaîne si vous le souhaitez....
Vous pouvez également utiliser l'une des nombreuses bibliothèques déjà là-bas.