2010-05-30 18 views
0

Je viens de créer un script qui extrait l'article sur une page Web via le serveur côté JS. (Si vous êtes intéressé: il est utilisé pour http://pipes.yahoo.com/fb55/expandr.)Réparer les liens internes dans JS

Je viens de recevoir un petit problème avec les liens internes. Certaines pages comportent des liens comme:

/subfolder/subpage.html 

Ce que je dois faire est de les fixer et mettre racine là, comme ceci:

protocol://secondlevel.firstlevel/subfolder/subpage.html 

J'utilise E4X pour le traitement de la page. Je ne veux pas montrer mon essai effrayant actuel, c'est buggy et lent. Est-ce que quelqu'un a une solution pour moi?

Répondre

1

Vous pourriez être en mesure de les réécrire avec une expression régulière:

var baseUrl = "http://somesite.com/somepage" 
var root = baseUrl.match(/^[^:]+:\/\/[^\/]+\//)[0]; 
// "http://somesite.com/" 

var HTML = "<a href='/testing'>test</a> and <a class='test' href=\"/foo/bar\"> </a>"; 

HTML.replace(/<a [^>]*href=["']\/([^'"]+)["']/ig, function (whole, url) { 
    return whole.replace("/"+url, root+url); 
}); 

// "<a href='http://somesite.com/testing'>test</a> and <a class='test' href=\"http://somesite.com/foo/bar\"> </a>" 
+0

C'est une bonne solution, même s'il y a un peu de performance pour gagner. (Mais c'est bien mieux que mon code.) Merci! – fb55