代码之家  ›  专栏  ›  技术社区  ›  fb55

在JS中修复内部链接

  •  0
  • fb55  · 技术社区  · 16 年前

    我刚刚创建了一个脚本,它通过服务器端JS从网页中提取文章。(如果您感兴趣:用于 http://pipes.yahoo.com/fb55/expandr )

    我只是对内部链接有点问题。有些网页包含如下链接:

    /subfolder/subpage.html
    

    我需要做的是修复它们并在那里扎根,如下所示:

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

    我正在使用E4X处理页面。我不想展示我目前的恐怖尝试,它是四轮马车和缓慢。有人能帮我解决问题吗?

    1 回复  |  直到 16 年前
        1
  •  1
  •   gnarf    16 年前

    您可以用一些正则表达式重写它们:

    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>"
    
    推荐文章