Помогите модифицировать код JS
Подскажите пожалуйста, как лучше объединить 2 куска кода, чтобы не было в JS конфликтов между старыми и новыми компонентами кода.
Есть код GoogleAnalytics который используется сейчас на мобильной версии сайта: <script type="text/javascript"> function getParameterByName(name) { name = name.replace(/[\[]/, '\\\[').replace(/[\]]/, '\\\]'); var regexS = '[\\?&]' + name + '=([^&#]*)'; var regex = new RegExp(regexS, 'i'); var results = regex.exec(window.location.search); if (results == null) { return ''; } else { return decodeURIComponent(results[1].replace(/\+/g, ' ')); } } var promoId = getParameterByName('promoid'); var _gaq = _gaq || []; _gaq.push(['_setAccount', 'UA-XXXXXXX-X']); _gaq.push(['_setDomainName', 'domen.ru']); if (promoId !== '') { _gaq.push(['_setCustomVar', 1, 'promoId', promoId, 2]); } _gaq.push(['_trackPageview']); (function() { var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); })(); </script> А вот модифицированный код гугланалитикса для более полной статистики посещений, который нужно добавить к существующему: <script type="text/javascript"> function getParameterByName(name) { name = name.replace(/[\[]/, '\\\[').replace(/[\]]/, '\\\]'); var regexS = '[\\?&]' + name + '=([^&#]*)'; var regex = new RegExp(regexS, 'i'); var results = regex.exec(window.location.search); if (results == null) { return ''; } else { return decodeURIComponent(results[1].replace(/\+/g, ' ')); } } var promoId = getParameterByName('promoid'); var _gaq = _gaq || []; _gaq.push(['_setAccount', 'UA-XXXXXXX-X']); _gaq.push(['_setDomainName', 'domen.ru']); if (promoId !== '') { _gaq.push(['_setCustomVar', 1, 'promoId', promoId, 2]); } _gaq.push(['_initData']); function readcookie(name) { // функция чтения куки var re = new RegExp("(?:^| )" + name + "=([^;]*)", "i"); var matches = document.cookie.match(re); return matches && matches.length == 2 ? matches[1] : ""; }; if (document.referrer.match(/^http[s]?:\/\/(www\.|)domen\.ru/)) {} // переход со страницы нашего сайта - ничего не делаем else { if (document.referrer=='') { // нет источника посещения if (document.cookie.indexOf('__utmz=')) { // проверка существования куки __utmz var utmz = readcookie('__utmz'); // читаем значение куки var utmz2 = utmz.replace (/\utmcsr.*/, 'utmcsr=(direct)|utmccn=(direct)|utmcmd=(none)'); // переписываем (даже в случае идентичности) document.cookie = '__utmz=' + utmz2+'; path=/; domain=.domen.ru'; // обновляем } } else { var re2= new RegExp("^http[s]?:\/\/(www\.|)([^\/]*)\/([^\?]*)", "i"); var domenar = document.referrer.match(re2); var domen=RegExp.$2; var linkref=RegExp.$3; if (domen.match(/^yandex\./) || domen.match(/^google\./) || domen.match(/^bing\./) || domen.match(/^search\./) || domen.match(/^rambler\./) || domen.match(/^yahoo\./) || domen.match(/^msn\./) || domen.match(/^ask\./) || domen.match(/^aol\./)) {} else { if (document.cookie.indexOf('__utmz=')) { var utmz = readcookie('__utmz'); var utmz2 = utmz.replace (/\utmcsr.*/, 'utmcsr='+domen+'|utmccn=(referral)|utmcmd=referral|utmcct=/'+linkref+'') ; document.cookie = '__utmz=' + utmz2+'; path=/; domain=.domen.ru'; } } } } _gaq.push(['_trackPageview']); (function() { var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); })(); </script> Вот, что у меня получилось после объединения кодов: <script type="text/javascript"> function getParameterByName(name) { name = name.replace(/[\[]/, '\\\[').replace(/[\]]/, '\\\]'); var regexS = '[\\?&]' + name + '=([^&#]*)'; var regex = new RegExp(regexS, 'i'); var results = regex.exec(window.location.search); if (results == null) { return ''; } else { return decodeURIComponent(results[1].replace(/\+/g, ' ')); } } var promoId = getParameterByName('promoid'); var _gaq = _gaq || []; _gaq.push(['_setAccount', 'UA-XXXXXXX-X']); _gaq.push(['_setDomainName', 'domen.ru']); if (promoId !== '') { _gaq.push(['_setCustomVar', 1, 'promoId', promoId, 2]); } _gaq.push(['_initData']); function readcookie(name) { // функция чтения куки var re = new RegExp("(?:^| )" + name + "=([^;]*)", "i"); var matches = document.cookie.match(re); return matches && matches.length == 2 ? matches[1] : ""; }; if (document.referrer.match(/^http[s]?:\/\/(www\.|)domen\.ru/)) {} // переход со страницы нашего сайта - ничего не делаем else { if (document.referrer=='') { // нет источника посещения if (document.cookie.indexOf('__utmz=')) { // проверка существования куки __utmz var utmz = readcookie('__utmz'); // читаем значение куки var utmz2 = utmz.replace (/\utmcsr.*/, 'utmcsr=(direct)|utmccn=(direct)|utmcmd=(none)'); // переписываем (даже в случае идентичности) document.cookie = '__utmz=' + utmz2+'; path=/; domain=.domen.ru'; // обновляем } } else { var re2= new RegExp("^http[s]?:\/\/(www\.|)([^\/]*)\/([^\?]*)", "i"); var domenar = document.referrer.match(re2); var domen=RegExp.$2; var linkref=RegExp.$3; if (domen.match(/^yandex\./) || domen.match(/^google\./) || domen.match(/^bing\./) || domen.match(/^search\./) || domen.match(/^rambler\./) || domen.match(/^yahoo\./) || domen.match(/^msn\./) || domen.match(/^ask\./) || domen.match(/^aol\./)) {} else { if (document.cookie.indexOf('__utmz=')) { var utmz = readcookie('__utmz'); var utmz2 = utmz.replace (/\utmcsr.*/, 'utmcsr='+domen+'|utmccn=(referral)|utmcmd=referral|utmcct=/'+linkref+'') ; document.cookie = '__utmz=' + utmz2+'; path=/; domain=.domen.ru'; } } } } _gaq.push(['_trackPageview']); (function() { var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); })(); </script> Помогите пожалуйста проверить код после объединения, не будет ли конфликтов между функциями. |
Вы просите готовый скрипт с нуля.
Это работа, и за нее обычно платят деньги. Для таких сообщений предназначен раздел форума "Работа". Если вы все же хотите, чтобы вам помогли - приложите какие-то усилия сами и задавайте вопросы по ходу дела. |
ок, ясно спасибо
|
Часовой пояс GMT +3, время: 02:14. |