21世纪开运网www.21kaiyun.com用javascript替换URL中的参数值的技巧

来源:互联网 发布:js字符串转date类型 编辑:程序博客网 时间:2024/06/05 17:45


今天遇到一个需要用javascript将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('/') 

    }; 

}

用法:

var myURL = parseURL('http://www.21kaiyun.com/default.aspx?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://www.21kaiyun.com

取得URL的参数,以对象形式返回!

var getParam = function(path){ 

    var result = {},param = /([^?=&]+)=([^&]+)/ig,match; 

    while((match = param.exec(path)) != null){ 

        result[match[1]] = match[2]; 

    } 

    return result; 

 

Object.keys = Object.keys || function(obj){ 

    var result = []; 

    for(var i in obj){ 

        if(obj.hasOwnProperty(i)){ 

            result.push(i) 

        } 

    } 

    return result; 

var path = "http://www.21kaiyun.com/f?ct=318767104&tn=baiduKeywordSearch&sc=1&pn=0&rn=50&lm=4&rs4=2&rs3=2&word=%D0%C2%BE%D3%D5%D1%C4%CB&frs=jpq"; 

 

var r = getParam(path); 

alert(Object.keys(r))//ct,tn,sc,pn,rn,lm,rs4,rs3,word,frs

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/21aspnet/archive/2010/07/29/5774263.aspx