Мелкая правка кода 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 шапки для мобильной и обычной версии и там используется этот код. Нужно общее правило для вставки кода в обе шапки, чтобы был указан домен-поддомен - при заходе с которых ничего не менялось бы в кукисах, чтобы мы не путались в статистике Гугл аналитикса при переходах с мобильной на обычную версию и наоборот. Пдскажите кто возьмется и сколько это будет стоить. |
не совсем понимаю как правильно прописать все в 34 строке, чтобы учитывался домен и поддомен. В остальном коде можно не править, достаточно указанную строчку.
|
попробуйте так http://learn.javascript.ru/play/t8Bwuc
|
ок, спасибо попробую
|
Цитата:
http: //www.somesite.ru/test.html?javascript.ru |
Попробуйте:
/^https?:\/\/([^?\/.]+\.)*javascript\.ru($|[?#\/])/ |
Цитата:
2. Цитата:
3. на мой взгляд не правильно пытаться решить эту задачу в одну регу а) отсекаем основной адрес http://learn.javascript.ru/forum/job...a-koda-js.html -> http://learn.javascript.ru б) смотрим, что на конце *примерно так |
Цитата:
В referrer http:// всегда есть, даже когда пришли с того же домена, так что на это можно (и нужно) рассчитывать, иначе, если проверять адрес не с самого начала, то где гарантия что мы найдем часть доменного имени, а не имя локального файла? |
мной был предложен такой вариант для основного и мобильного, но понял ли меня ТС незнаю
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/)) |
А зачем буковка s после http в квадратных скобках?
|
Цитата:
|
|
Цитата:
'http://www.somesite.ru/javascript.ru' 'http://javascript.ru.somesite.ru' |
Цитата:
alert( foo( 'http://www.somesite.ru/test.html?javascript.ru' ) );
alert( foo( 'http://learn.javascript.ru/forum' ) );
alert( foo( 'www.learn.javascript.ru/forum' ) );
alert( foo( 'http://javascript.ru/' ) );
function foo( url ) {
compare = 'javascript';
url = url.replace( /^[^:]+:../, '' )
.replace( /\/.*/, '' )
.split( '.' );
return url[ url.length - 2 ] === compare;
}
|
Цитата:
Еще обманный урл: "http://somesite.ru?www.javascript.ru" А вот несправедливо забракованный: "http://javascript.ru?somesite.ru" |
rgl, еще варианты будут? :)
alert(
[
'http://www.somesite.ru/test.html?javascript.ru',
'http://www.javascript.ru',
'http://learn.javascript.ru',
'http://www.somesite.ru/javascript.ru',
'http://javascript.ru.somesite.ru',
'http://www.somesite.ru/test.html?javascript.ru',
'http://learn.javascript.ru/forum',
'www.learn.javascript.ru/forum',
'http://javascript.ru',
'http://somesite.ru?www.javascript.ru',
'http://javascript.ru?somesite.ru'
]
.map( function( url ) { return foo( url ); })
.join( '\n' )
);
function foo( url ) {
url = url.replace( /^[^:]+:../, '' )
.replace( /[?\/].*/, '' )
.split( '.' );
return url[ url.length - 2 ] === 'javascript';
}
|
| Часовой пояс GMT +3, время: 21:58. |