[英]Remove url param javascript
我需要做这个网址
http://test.com/deal/134487/some-deal-id?sourceType=by_category&somestring=true&anotherparam=true
看起来像这样
http://test.com/deal/134487/some-deal-id?somestring=true&anotherparam=true
我只想删除sourceType并保留其他所有内容
到目前为止,这是我拥有的功能,当url为http://test.com/deal/134487/some-deal-id?sourceType=by_category时,它看起来很棒,但是由于在sourceType之后添加了更多键,因此没有任何反应。 另外,我也在Google跟踪代码管理器中运行此代码,因此无法刷新页面
(function () {
var sourceType;
var query = parseQuery(window.location.search);
var history = window.history
delete query.sourceType
var search = stringifyQuery(query);
if (window.location.search) {
sourceType = window.location.search
.substr(1)
.split('&')
.filter(function (i) {return ~i.indexOf('sourceType=')})
.map(function (i) {return i.split('=')[1] })[0]
history && history.replaceState && history.replaceState(history.state, null, window.location.pathname + search)
}
})()
function parseQuery (locationSearch) {
if (typeof locationSearch !== 'string' || !locationSearch.length) {
return {}
}
var query = {}
locationSearch.substr(1).split('&').forEach(function (partStr) {
var parts = partStr.split('=')
var key = parts[0]
var val = decodeURIComponent(parts[1])
if (query.hasOwnProperty(key)) {
var existingVal = query[key]
if (existingVal instanceof Array) {
existingVal.push(val)
} else {
query[key] = [existingVal, val]
}
} else {
query[key] = val
}
})
return query
}
function stringifyQuery (query) {
if (!query) return ''
return '?' + Object.keys(query).map(function (key) {
var val = query[key]
if (val instanceof Array) {
return val.map(function (valPart) {
return [key, encodeURIComponent(valPart)].join('=')
}).join('&')
} else {
return [key, encodeURIComponent(val)].join('=')
}
}).join('&')
}
从您提供的上述src无法理解太多。 如果您要从网址中删除查询字符串,以下内容可以为您提供帮助
window.location.href = window.location.href.split('?')[0];
该行将拆分,并为您提供没有查询字符串的URL。
好的,这似乎可行
function changeUrl() {
var sourceType;
var query = parseQuery(window.location.search);
var history = window.history
delete query.sourceType
var search = stringifyQuery(query);
history && history.replaceState && history.replaceState(history.state, null, window.location.pathname + search)
}
function parseQuery(locationSearch) {
if (typeof locationSearch !== 'string' || !locationSearch.length) {
return {}
}
var query = {}
locationSearch.substr(1).split('&').forEach(function(partStr) {
var parts = partStr.split('=')
var key = parts[0]
var val = decodeURIComponent(parts[1])
if (query.hasOwnProperty(key)) {
var existingVal = query[key]
if (existingVal instanceof Array) {
existingVal.push(val)
} else {
query[key] = [existingVal, val]
}
} else {
query[key] = val
}
})
return query
}
function stringifyQuery(query) {
if (!query) return ''
return '?' + Object.keys(query).map(function(key) {
var val = query[key]
if (val instanceof Array) {
return val.map(function(valPart) {
return [key, encodeURIComponent(valPart)].join('=')
}).join('&')
} else {
return [key, encodeURIComponent(val)].join('=')
}
}).join('&')
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.