在Javascript中获取查询参数的最佳方法

时间:2015-07-17 18:22:02

标签: javascript regex parsing cross-browser query-parameters

我只在这里使用Javascript,因为这是一个广告登陆器(登陆页面),客户端不希望jQuery减慢网页速度。我需要一些Javascript,这是在登陆器上获取'tid'查询参数的最佳方式(最少的代码行)。例如,假设这个广告链接转到着陆器:

http://example.com/lander1.php?tid=med01

您能否提供在Javascript中获取查询参数的最佳方式,并使其在IE7和转发(FF,Chrome,Safari,Opera和IE)中都能正常工作?这是我想出来的,但也许你可以更加优化它?使其更加紧凑的原因是像素跟踪的片段尽可能小。我的意思是,我已经有额外的行(这里没有显示)来创建一个回发参数数组,然后调用远程Javascript将这些额外的参数传递给PIWIK跟踪系统。

try {
  var q = {};
  var ls1 = location.search.substr(1) + '&';
  var ls2 = ls1.split('&');
  for(var i1 in ls2) {
    var i2 = ls2[i1];
    q[i2.split('=')[0]] = i2.split('=')[1];
  }
} catch(e) {}

//然后我可以使用q.tid来获取URL上的'tid'查询参数。

3 个答案:

答案 0 :(得分:0)

试试这个

 var getQueryParameterByName = function (name) {
        name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
        var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
            results = regex.exec(location.search);
        return results == null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
    };

答案 1 :(得分:0)

来自另一篇文章: 您也可以使用Rodney Rehm的URI.js库。

var qs = URI('www.mysite.com/default.aspx?dest=aboutus.aspx').query(true); 
alert(qs.tid); 

答案 2 :(得分:0)

我认为这可行:

var tid = '';try{tid=location.search.substr(1).split('=').join('#=').split(/=/).join('#').split('tid##')[1].split('&')[0];}catch(e){}

如果我在URL的末尾添加& test = 1,这甚至可以工作,我甚至可以通过在'test'上面交换'tid'来获得'test'查询参数。