Исправить внутренние ссылки в JS - PullRequest
0 голосов
/ 30 мая 2010

Я только что создал скрипт, который извлекает статью из веб-страницы через JS на стороне сервера. (Если вам интересно: он используется для http://pipes.yahoo.com/fb55/expandr.)

У меня просто небольшая проблема с внутренними ссылками. Некоторые страницы содержат ссылки, такие как:

/subfolder/subpage.html

Мне нужно исправить их и установить root, например:

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

Я использую E4X для обработки страницы. Я не хочу показывать свою текущую жуткую попытку, она глючная и медленная. У кого-нибудь есть решение для меня?

1 Ответ

1 голос
/ 30 мая 2010

Вы можете переписать их с помощью некоторого регулярного выражения:

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>"
...