根据页面地址拼接页面内部获取到的地址
应用场景:
获取到网页内部的a标签的href值,再根据页面地址将其拼接成完整的url
代码块:
function getFullUrl(parentUrl, subUrl) {
var regexp = /^http\:\/\/.*/gi;
if (regexp.test(subUrl)) {
return subUrl
} else {
if ('#' == subUrl || '##' == subUrl || '###' == subUrl) {
return parentUrl;
}
var purLen = parentUrl.length;
var urLen = subUrl.length;
if ('./' == subUrl.slice(0 , 2 )) {
if (parentUrl.slice(-1 , purLen) == '/' ) {
return parentUrl.slice(0 , -1 ) + subUrl.slice(1 , urLen);
} else {
return parentUrl.slice(0 , parentUrl.lastIndexOf('/' ) + 1 ) +
subUrl.slice(2 , urLen);
}
} else if ('/' == subUrl.slice(0 , 1 )) {
if (parentUrl.slice(-1 , purLen) == '/' ) {
parentUrl = parentUrl.slice(0 , -1 );
purLen -= 1 ;
}
var hostStart = parentUrl.indexOf(':' ) + 3 ;
var schema = parentUrl.slice(0 , hostStart);
var pUrlList = parentUrl.slice(hostStart, purLen).split('/' );
if (subUrl == '/' ) {
return schema + pUrlList.slice(0 , 1 ).join ('/' ) + '/' ;
}
var urList = subUrl.slice(1 , urLen).split('/' );
var tail_idx = -1 ;
for (u in urList){
try {
tail_idx = pUrlList.indexOf(u);
} catch (e) {
tail_idx = -1 ;
}
}
if (-1 != tail_idx) {
return schema + pUrlList.slice(0 , tail_idx).join ('/' ) + '/' + urList.join ('/' );
}
return schema + pUrlList.slice(0 , 1 ).join ('/' ) + '/' + urList.join ('/' );
} else {
if (parentUrl.slice(-1 , purLen) == '/' ) {
return parentUrl + subUrl;
} else {
return parentUrl.slice(0 , parentUrl.lastIndexOf('/' ) + 1 ) + subUrl;
}
}
}
}