根据页面地址拼接页面内部获取到的地址

来源:互联网 发布:mac怎么下载免费软件 编辑:程序博客网 时间:2024/05/20 01:12

根据页面地址拼接页面内部获取到的地址


应用场景:

获取到网页内部的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;            }        }    }}