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


今天遇到一个需要用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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值