Блог

Javascript: разбор URL адреса

Нашел одну очень полезную функцию в блоге у James Padolsey. Когда пишешь plugin для CKEditor, который вставляет и редактирует Google карты, такая функция очень полезна. Эта короткая функция возвращает объект, содержащий всю информацию, которую можно извлечь из URL.

Код легкий и читаемый. Как это функция работает: функция создает новый элемент ссылку и использует location свойства чтобы получить нужные URL данные.

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('/')
    };
}

Такая функция позволяет использовать единый механизм во всех браузерах, что не менее важно.

Источник:
http://james.padolsey.com/javascript/parsing-urls-with-the-dom/