一个不错的JavaScript解析浏览器路径方法

<script>

function parseURL(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('/')

    };

}





var myURL = parseURL('http://abc.com:8080/dir/index.html?id=255&m=hello#top');

myURL.file;     // = 'index.html'

myURL.hash;     // = 'top'

myURL.host;     // = 'abc.com'

myURL.query;    // = '?id=255&m=hello'

myURL.params;   // = Object = { id: 255, m: hello }

myURL.path;     // = '/dir/index.html'

myURL.segments; // = Array = ['dir', 'index.html']

myURL.port;     // = '8080'

myURL.protocol; // = 'http'

myURL.source;   // = 'http://abc.com:8080/dir/index.html?id=255&m=hello#top'

</script>

 JavaScript中有时需要用到当前的请求路径等涉及到url的情况,正常情况下我们可以使用location对象来获取我们需要的信息,本文从另外一个途径来解决这个问题,而且更加巧妙

你可能感兴趣的:(JavaScript)