Главная > Javascript > javascript — сохранять utm-метки при переходе между страницами и добавлять ко всем ссылкам на сайте get параметр ga_cid из cookie _ga

javascript — сохранять utm-метки при переходе между страницами и добавлять ко всем ссылкам на сайте get параметр ga_cid из cookie _ga

document.addEventListener("DOMContentLoaded",function(event){
	var ga_cookie=document.cookie.match(new RegExp('(^| )_ga=([^;]+)'));
	if(ga_cookie[2]){
		var ga_cookie_split=ga_cookie[2].split(".");
		var ga_cid=ga_cookie_split[2]+'.'+ga_cookie_split[3];
		var get_params=new Array('utm_source','utm_medium','utm_campaign','utm_content','utm_term');
		var params=new URLSearchParams(location.search);
		var links=document.getElementsByTagName("a");
		for(i=0;i<links.length;i++){
			var href=links[i].href;
			if(href.includes(document.domain)&&!(href.includes('#'))){
				get_params.forEach((get_param)=>{
					if(params.has(get_param)){
						href+=(href.includes('?'))?"&":"?";
						href+=get_param+"="+params.get(get_param);
					}
				})
				href+=(href.includes('?'))?"&":"?";
				href+="ga_cid="+ga_cid;
				links[i].href=href;
			}
		}
		var regex=new RegExp("([?;&])ga_cid[^&;]*[;&]?");
		var query=location.search.replace(regex,"$1").replace(/&$/,'');
		var search_param=(query.length>2?query+"&":"?")+(ga_cid?'ga_cid'+"="+ga_cid:'');
		var newurl=window.location.pathname+search_param;
		window.history.pushState({path:newurl},'',newurl);
	}
});
Categories: Javascript Tags:
  1. Пока что нет комментариев.
Похожие публикации