Javascript.RU

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

Мелкая правка кода JS
Здравствуйте.
Нужно поправить код JS
Вот исходник
01	<script type="text/javascript">
02	 
03	  function getParameterByName(name) {
04	    name = name.replace(/[\[]/, '\\\[').replace(/[\]]/, '\\\]');
05	    var regexS = '[\\?&]' + name + '=([^&#]*)';
06	    var regex = new RegExp(regexS, 'i');
07	    var results = regex.exec(window.location.search);
08	    if (results == null) {
09	      return '';
10	    } else {
11	      return decodeURIComponent(results[1].replace(/\+/g, ' '));
12	    }
13	  }
14	 
15	  var promoId = getParameterByName('promoid');
16	 
17	   var _gaq = _gaq || [];
18	  _gaq.push(['_setAccount', 'UA-XXXXXXX-X']);
19	 
20	 
21	  _gaq.push(['_setDomainName', 'domen.ru']);
22	  if (promoId !== '') {
23	    _gaq.push(['_setCustomVar', 1, 'promoId', promoId, 2]);
24	  }
25	   
26	_gaq.push(['_initData']);
27	  
28	        function readcookie(name) { // функция чтения куки
29	                var re = new RegExp("(?:^| )" + name + "=([^;]*)", "i");
30	                var matches = document.cookie.match(re);
31	                return matches && matches.length == 2 ? matches[1] : "";
32	        }; 
33	 
34	  if (document.referrer.match(/^http[s]?:\/\/(www\.|)domen\.ru/)) {} // переход со страницы нашего сайта - ничего не делаем
35	  else
36	        {
37	          if (document.referrer=='') 
38	          { // нет источника посещения
39	                  if (document.cookie.indexOf('__utmz=')) { // проверка существования куки __utmz
40	                  var utmz = readcookie('__utmz'); // читаем значение куки
41	                  var utmz2 = utmz.replace (/\utmcsr.*/, 'utmcsr=(direct)|utmccn=(direct)|utmcmd=(none)'); // переписываем (даже в случае идентичности)
42	                  document.cookie = '__utmz=' + utmz2+'; path=/; domain=.domen.ru'; // обновляем
43	                  }
44	          }
45	          else
46	          {
47	                 var re2= new RegExp("^http[s]?:\/\/(www\.|)([^\/]*)\/([^\?]*)", "i");
48	                 var domenar = document.referrer.match(re2);
49	                 var domen=RegExp.$2;  var linkref=RegExp.$3;
50	                 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\./)) {}
51	                 else
52	                 {
53	                          if (document.cookie.indexOf('__utmz=')) {
54	                          var utmz = readcookie('__utmz');
55	                          var utmz2 = utmz.replace (/\utmcsr.*/, 'utmcsr='+domen+'|utmccn=(referral)|utmcmd=referral|utmcct=/'+linkref+'') ;
56	                          document.cookie = '__utmz=' + utmz2+'; path=/; domain=.domen.ru';
57	                          }
58	                 }
59	          }
60	        }
61	 
62	  _gaq.push(['_trackPageview']);
63	 
64	  (function() {
65	    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
66	    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
67	    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
68	  })();
69	 
70	 
71	</script>



Нужно поправить правило в строке 34 для мобильной версии сайта и обычной. Ну или может еще гдето подправить в коде.

Т.е. нужно правило - если рефер НАШ домен или поддомен - domen.ru , m.domen.ru, то ничего не делаем
34 if (document.referrer.match(/^http[s]?:\/\/(www\.|)domen\.ru/)) {} // переход со страницы нашего сайта - ничего не делаем

У нас 2 шапки для мобильной и обычной версии и там используется этот код. Нужно общее правило для вставки кода в обе шапки, чтобы был указан домен-поддомен - при заходе с которых ничего не менялось бы в кукисах, чтобы мы не путались в статистике Гугл аналитикса при переходах с мобильной на обычную версию и наоборот.

Пдскажите кто возьмется и сколько это будет стоить.

Последний раз редактировалось refer5, 31.01.2013 в 17:38. Причина: 3
Ответить с цитированием
  #2 (permalink)  
Старый 31.01.2013, 23:50
Новичок на форуме
Отправить личное сообщение для refer5 Посмотреть профиль Найти все сообщения от refer5
 
Регистрация: 27.12.2012
Сообщений: 8

не совсем понимаю как правильно прописать все в 34 строке, чтобы учитывался домен и поддомен. В остальном коде можно не править, достаточно указанную строчку.

Последний раз редактировалось refer5, 31.01.2013 в 23:52. Причина: 1
Ответить с цитированием
  #3 (permalink)  
Старый 01.02.2013, 01:14
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

попробуйте так http://learn.javascript.ru/play/t8Bwuc
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием
  #4 (permalink)  
Старый 01.02.2013, 02:20
Новичок на форуме
Отправить личное сообщение для refer5 Посмотреть профиль Найти все сообщения от refer5
 
Регистрация: 27.12.2012
Сообщений: 8

ок, спасибо попробую
Ответить с цитированием
  #5 (permalink)  
Старый 01.02.2013, 15:49
Аватар для rgl
rgl rgl вне форума
Профессор
Отправить личное сообщение для rgl Посмотреть профиль Найти все сообщения от rgl
 
Регистрация: 28.02.2011
Сообщений: 330

Сообщение от nerv_ Посмотреть сообщение
попробуйте так http://learn.javascript.ru/play/t8Bwuc
Легко обманывается, напр. неправильно сработает при таком referrer:
http: //www.somesite.ru/test.html?javascript.ru

Последний раз редактировалось rgl, 01.02.2013 в 15:51.
Ответить с цитированием
  #6 (permalink)  
Старый 01.02.2013, 16:16
Аватар для rgl
rgl rgl вне форума
Профессор
Отправить личное сообщение для rgl Посмотреть профиль Найти все сообщения от rgl
 
Регистрация: 28.02.2011
Сообщений: 330

Попробуйте:
/^https?:\/\/([^?\/.]+\.)*javascript\.ru($|[?#\/])/

Последний раз редактировалось rgl, 01.02.2013 в 16:37.
Ответить с цитированием
  #7 (permalink)  
Старый 01.02.2013, 16:51
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

Сообщение от rgl
Легко обманывается
1. делал это на скорую руку
2.
Сообщение от rgl
Попробуйте:
/^https?:\/\/([^?\/.]+\.)*javascript\.ru($|[?#\/])/
попробуй подставь эту регу в пример по моей ссылке
3. на мой взгляд не правильно пытаться решить эту задачу в одну регу
а) отсекаем основной адрес
http://learn.javascript.ru/forum/job...a-koda-js.html -> http://learn.javascript.ru
б) смотрим, что на конце

*примерно так
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием
  #8 (permalink)  
Старый 01.02.2013, 17:04
Аватар для rgl
rgl rgl вне форума
Профессор
Отправить личное сообщение для rgl Посмотреть профиль Найти все сообщения от rgl
 
Регистрация: 28.02.2011
Сообщений: 330

Сообщение от nerv_ Посмотреть сообщение
2. попробуй подставь эту регу в пример по моей ссылке
Подставил. Все работает если добавить в урлы недостающие http://
В referrer http:// всегда есть, даже когда пришли с того же домена, так что на это можно (и нужно) рассчитывать, иначе, если проверять адрес не с самого начала, то где гарантия что мы найдем часть доменного имени, а не имя локального файла?
Ответить с цитированием
  #9 (permalink)  
Старый 01.02.2013, 17:09
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 32,591

мной был предложен такой вариант для основного и мобильного, но понял ли меня ТС незнаю
alert(!!"http://www.somesite.ru/test.html?javascript.ru".match(/^http[s]?:\/\/(www\.|)(learn\.|)javascript\.ru/))
alert(!!"http://www.javascript.ru".match(/^http[s]?:\/\/(www\.|)(learn\.|)javascript\.ru/))
alert(!!"http://learn.javascript.ru".match(/^http[s]?:\/\/(www\.|)(learn\.|)javascript\.ru/))
Ответить с цитированием
  #10 (permalink)  
Старый 01.02.2013, 17:30
Аватар для rgl
rgl rgl вне форума
Профессор
Отправить личное сообщение для rgl Посмотреть профиль Найти все сообщения от rgl
 
Регистрация: 28.02.2011
Сообщений: 330

А зачем буковка s после http в квадратных скобках?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подскажите плагин для подсветки синтаксиса html css php js кода Кирюха =) Библиотеки/Тулкиты/Фреймворки 2 31.10.2015 06:12
Ищу приличный редактор кода под JS Universe Общие вопросы Javascript 28 30.10.2012 17:30
Как реализовать отключения JS кода через админку ? lamer Серверные языки и технологии 4 08.02.2012 16:23
Добавление кода js в js файл BEUJ Общие вопросы Javascript 13 12.01.2012 20:35
Загрузка дополнительного js кода с сервера Anonymous2008 Общие вопросы Javascript 5 20.11.2008 12:33