在 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=].
我只在这里使用 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=].