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

Most Optimal Way To Get Query Param in Javascript

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

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' 查询参数。

试试这个

 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, " "));
    };

来自另一个 post 这里: 您还可以使用 Rodney Rehm 的 URI.js 库。

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

我认为这可行:

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

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