2010-04-20 38 views

回答

9

以下函數分解URL然後解析它。

function concatAndResolveUrl(url, concat) { 
    var url1 = url.split('/'); 
    var url2 = concat.split('/'); 
    var url3 = [ ]; 
    for (var i = 0, l = url1.length; i < l; i ++) { 
    if (url1[i] == '..') { 
     url3.pop(); 
    } else if (url1[i] == '.') { 
     continue; 
    } else { 
     url3.push(url1[i]); 
    } 
    } 
    for (var i = 0, l = url2.length; i < l; i ++) { 
    if (url2[i] == '..') { 
     url3.pop(); 
    } else if (url2[i] == '.') { 
     continue; 
    } else { 
     url3.push(url2[i]); 
    } 
    } 
    return url3.join('/'); 
} 
+0

不錯。謝了哥們! – heffaklump 2010-04-22 06:13:20

+1

我修改了這個地方,測試'。'還要測試空字符串'url1 [i] =='。' || url1 [i] =='''所以如果傳入的URL有斜槓,它仍然會構成一個有效的URL。 +1 – Jay 2012-11-29 14:27:35

6

使用URI.js(http://medialize.github.com/URI.js/docs.html#absoluteto):

function joinUrl(baseUrl, url) { 
    var theUrl = new URI(url); 
    if (theUrl.is("relative")) { 
     theUrl = theUrl.absoluteTo(baseUrl); 
    } 
    return theUrl.toString(); 
}