URL工具类

/**
 * @author: 苗士军
 * @description URL工具类
 */
UrlUtils = {
    /**
     * @description 判断url是否存在(存在跨域问题)
     * @param _url
     * @return {boolean}
     */
    isTrueUrl: function (_url) {
        result = false;
        if (_url == undefined || _url == '') {
            return result;
        }
        $.ajax({
            url: _url,
            type: "get",
            async: false,
            success: function () {
                result = true;
            },
            statusCode: {
                404: function () {
                }
            }
        });
        return result;
    },
    /**
     * @description 解析url
     * @param url
     * @return {{source: *, protocol, host: string, port: (*|Function|string), query: (*|string), params, file: *, hash, path: string, relative: *, segments: Array}}
     */
    parseURL: function (url) {
        var a = document.createElement('a');
        a.href = url;
        return {
            source: url,
            protocol: a.protocol.replace(':', ''),
            host: a.hostname,
            port: a.port,
            query: a.search,
            params: (function () {
                var ret = {},
                    seg = a.search.replace(/^\?/, '').split('&'),
                    len = seg.length, i = 0, s;
                for (; i < len; i++) {
                    if (!seg[i]) {
                        continue;
                    }
                    s = seg[i].split('=');
                    ret[s[0]] = s[1];
                }
                return ret;
            })(),
            file: (a.pathname.match(/\/([^\/?#]+)$/i) || [, ''])[1],
            hash: a.hash.replace('#', ''),
            path: a.pathname.replace(/^([^\/])/, '/$1'),
            relative: (a.href.match(/tps?:\/\/[^\/]+(.+)/) || [, ''])[1],
            segments: a.pathname.replace(/^\//, '').split('/')
        };
    },
    /**
     * @description 解析url获取参数
     * @param path
     * @return {{}}
     */
    getParam: function (path) {
        var result = {}, param = /([^?=&]+)=([^&]+)/ig, match;
        while ((match = param.exec(path)) != null) {
            result[match[1]] = match[2];
        }
        return result;
    }
}

 

posted @ 2019-04-09 15:59  苗士军  阅读(471)  评论(0编辑  收藏  举报