2010-04-08 6 views
4

j'accéder à la collection stylesheet comme ceci:Strip nom de domaine de url (string)

var css = document.styleSheets[0]; 

Il retourne par exemple. Question: comment puis-je supprimer le nom de domaine pour obtenir /css/main.css?

+0

j'oublié de mentionner que le nom de domaine doit être variable - donc pas de remplacement. – Fuxi

+0

Voir ma nouvelle réponse qui utilise une expression régulière, qui fonctionnera avec n'importe quel nom de domaine. –

+0

Arrêtez d'écrire des tags dans les titres s'il vous plaît. Vous êtes ici depuis presque deux ans! –

Répondre

-1
css = css.replace('http://www.mydomain.com', ''); 
0

Que diriez-vous:

css = document.styleSheets[0]; 
cssAry = css.split('/'); 

domain = cssAry[2]; 
path = '/' + cssAry[3] + '/' + cssAry[4]; 

Cela vous donne techniquement votre domaine et le chemin.

6

Cette expression régulière devrait faire l'affaire. Il remplacera tout nom de domaine trouvé avec une chaîne vide. Il supporte également https: //

//css is currently equal to http://www.mydomain.com/css/main.css  
css = css.replace(/https?:\/\/[^\/]+/i, ""); 

Cela renverra /css/main.css

+0

Simple et propre, pour le drapeau global ajoutez l'utiliser comme css.replace (/ https?: \/\/[^\ /] +/ig, ""); @ Erikk-ross, pouvez-vous s'il vous plaît ajouter http et support global à cela? –

1

Vous pouvez utiliser une astuce, en créant un <a> -Element, puis en définissant la chaîne à l'attribut href de cette <a> -Element et vous avez un Location object vous pouvez obtenir le nom de chemin de.

Vous pouvez soit ajouter une méthode pour le prototype de chaîne:

String.prototype.toLocation = function() { 
    var a = document.createElement('a'); 
    a.href = this; 
    return a; 
}; 

et l'utiliser comme ceci:
css.toLocation().pathname

ou en faire une fonction:

function toLocation(url) { 
    var a = document.createElement('a'); 
    a.href = url; 
    return a; 
}; 

et l'utilisation comme ceci:
toLocation(css).pathname

ces deux va afficher: "/css/main.css"