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?

Était-ce utile?

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;

AVERTISSEMENT : Cette interface est un peu nouveau, donc, si vous n'utilisez pas de Transpiler , veuillez vérifier le CompatibilitéTable et faire vos tests chez les navigateurs cible.

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top