如果来自特定URL的某些访问,我们如何更新页面的内部链接。
例如。
某些用户来自Facebook,URL为
https://www.example.com/?utm_source=facebook&utm_medium=cpc&utm_campaign=mobile
并且我想更新我所有的特定链接以基于URL进行更新,如果是
原始网址
https://www.example.com/cat/i?pid=ABCD&affid=aff1&affExtParam1=para1&affExtParam2=para2
用户从Facebook链接访问后的更新URL
https://www.example.com/cat/i?pid=ABCD&affid=aff1&affExtParam1=facebook&affExtParam2=mobile
即使它可以编辑URL中的一个参数也很有用。
注意: 在param1和param2中,可以是退出页面中的任何文本。
答案 0 :(得分:0)
感谢您的提示。我已经尝试过并且能够替换一个URL参数。下面是代码。
来自不同答案的组合脚本,并使用以下代码。
function updateQueryStringParameter(uri, key, value) {
var re = new RegExp("([?&])" + key + "=.*?(&|#|$)", "i");
if( value === undefined ) {
if (uri.match(re)) {
return uri.replace(re, '$1$2');
} else {
return uri;
}
} else {
if (uri.match(re)) {
return uri.replace(re, '$1' + key + "=" + value + '$2');
} else {
var hash = '';
if( uri.indexOf('#') !== -1 ){
hash = uri.replace(/.*#/, '#');
uri = uri.replace(/#.*/, '');
}
var separator = uri.indexOf('?') !== -1 ? "&" : "?";
return uri + separator + key + "=" + value + hash;
}
}
}
$.urlParam = function(name){
var results = new RegExp('[\?&]' + name + '=([^&#]*)').exec(window.location.href);
if (results==null){
return null;
}
else{
return decodeURI(results[1]) || 0;
}
}
var key = "affExtParam2";
var value = $.urlParam('utm_source');
$('a').each(function(){
var uri = $(this).attr("href");
$(this).attr("href" , updateQueryStringParameter( uri, key, value ));
});
如果您可以进一步优化,则无法在JS小提琴中进行测试,但可以在本地正常工作,这将是很大的帮助。