JavaScript不重新整理查詢當前網址上的querystring並修改查詢字串變數
經常有些場景需要從網址獲取變數,比如:
http://ourjs.com?param1=test1¶m2=test2
需要獲取 param1/ param2 的變數,有時侯需要修改某個變數,有非常多的JS庫可以實現,其實用簡單的幾行程式碼即可實現:
var qs = {}
qs.get = function(name) {
var reg = new RegExp("[?&#]" + name + "=[^$&]*");
var parameter = location.href.match(reg)
if (!parameter) {
return;
}
return decodeURIComponent(parameter[0].substr(name.length + 2));
}
qs.set = function(name, value) {
var reg = new RegExp("([?&#]" + name + "=)[^$&]*")
var url = location.href
var parameter = url.match(reg)
if (parameter) {
url = url.replace(reg, '$1' + value)
} else {
var first = url.indexOf('#') > 0 ? '' : '#'
url += (url.indexOf('=') > 0 ? '&' : first) + name + '=' + value
}
history.replaceState && history.replaceState(null, null, url)
}
$.qs = qs;
使用:
qs.get('param1') > test1 qs.set('param1', 'newvalue') # 當前網址更新為:http://ourjs.com?param1=newvalue¶m2=test2