Показать сообщение отдельно
  #1 (permalink)  
Старый 22.01.2013, 15:01
Новичок на форуме
Отправить личное сообщение для refer5 Посмотреть профиль Найти все сообщения от refer5
 
Регистрация: 28.12.2012
Сообщений: 8

Помогите модифицировать код 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>


Помогите пожалуйста проверить код после объединения, не будет ли конфликтов между функциями.
Ответить с цитированием