176 votes

JavaScript/jQuery méthode pour trouver l'URL de base à partir d'une chaîne

J'essaie de trouver un moyen relativement facile et fiable de la méthode pour extraire l'URL de base à partir d'une variable de chaîne à l'aide de JavaScript/jQuery.

Par exemple, étant donné quelque chose comme:

http://www.sitename.com/article/2009/09/14/this-is-an-article/

J'aimerais obtenir:

http://www.sitename.com/

Est une expression régulière le meilleur pari? Si oui, quelle déclaration pourrais-je utiliser pour attribuer l'URL de base extraite à partir d'une chaîne de caractères à une variable?

J'ai fait quelques recherches sur ce sujet, mais tout ce que j'ai trouver dans le JavaScript monde semble tourner autour de la collecte de cette information à partir de l'effectif de l'URL du document à l'aide de l'emplacement.hôte ou similaire.

Merci d'avance pour tous conseils!

219voto

Rafal Ziolkowski Points 2338

Edit: Certains se plaindre de ne pas prendre en compte le protocole. J'ai donc décidé de la mise à niveau du code, car il est marqué comme réponse. Pour ceux qui aiment une ligne de code... et bien désolé, ce pourquoi nous utilisons le code minimizers, le code doit être lisible par l'homme, et de cette façon, c'est mieux... à mon avis.

pathArray = window.location.href.split( '/' );
protocol = pathArray[0];
host = pathArray[2];
url = protocol + '//' + host;

ou utilisez @David Czihak solution (à partir de ci-dessus):

if (!window.location.origin)
   window.location.origin = window.location.protocol+"//"+window.location.host;

154voto

David C. Points 1922

Basé sur Webkit navigateurs Firefox et internet explorer à partir de la version 21 savons window.location.origin. Pour cibler tous les navigateurs, j'utilise le code suivant:

if (!window.location.origin)
     window.location.origin = window.location.protocol+"//"+window.location.host;

Supposons que l'URL est - http://www.sitename.com/article/2009/09/14/this-is-an-article/, alors window.location.origin serait http://www.sitename.com.

Testé dans les navigateurs suivants:

  • Chrome 27
  • Firefox 23
  • Safari 6
  • Internet Explorer 10

45voto

daddywoodland Points 973

N'avez pas besoin d'utiliser jQuery, il suffit d'utiliser

window.location.hostname

36voto

epascarello Points 71353

Il n'y a pas de raison de faire des fractionnements d'obtenir le chemin d'accès, nom d'hôte, etc à partir d'une chaîne qui est un lien. Vous avez juste besoin d'utiliser un lien

//create a new element link with your link
var a = document.createElement("a");
a.href="http://www.sitename.com/article/2009/09/14/this-is-an-article/";

//hide it from view when it is added
a.style.display="none";

//add it
document.body.appendChild(a);

//read the links "features"
alert(a.protocol);
alert(a.hostname)
alert(a.pathname)
alert(a.port);
alert(a.hash);

//remove it
document.body.removeChild(a);

Vous pouvez facilement le faire avec jQuery ajout de l'élément et de la lecture de ses attr.

21voto

kta Points 4702
var host = window.location.protocol+'//'+window.location.host+'/'

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X