Наверх
Подписаться

Скрипты Calltouch

Содержание

 

Рекомендации по установке скриптов

Во всех перечисленных скриптах уже предусмотрена интеграция Calltouch с Google Analytics. Для ее корректной работы, все нижеперечисленные скрипты Calltouch должны быть установлены в коде сайта строго ниже стандартного скрипта Google Analytics, иначе интеграция Calltouch и Google Analytics в последствии не сможет быть настроена. 

До скриптов, между ними и после, может находиться произвольный код HTML. Необязательно располагать скрипты друг за другом, однако, обязательно сохранить их очередность:

  • Вначале стандартный скрипт Google Analytics
  • Затем скрипт Calltouch 

Перед установкой нового скрипта Calltouch необходимо удалить любые другие версии скрипта Calltouch из Вашего кода. Найти любую версию скрипта Calltouch в коде сайта можно по слову "d_client.js" без кавычек. 

С инструкцией по интеграции Calltouch и Google Analytics можно ознакомиться в соответствующей статье.

Обратите внимание! В случае, если Вы получили техническое задание от сотрудников Calltouch для подключения Вашего сайта к нашему сервису, устанавливайте скрипт непосредственно из технического задания, т.к. в нем могут быть учтены индивидуальные условия подключения Вашего сайта к сервису Calltouch.

 

Стандартный скрипт Calltouch
для сбора статистики в одном личном кабинете

Скопировать скрипт
<script type="text/javascript">
(function (w, d, nv, ls) {
var lwait = function (w, on, trf, dly, ma, orf, osf) {var pfx = "ct_await_", sfx = "_completed";if (!w[pfx + on + sfx]) {var ci = clearInterval, si = setInterval, st = setTimeout, cmld = function() {if (!w[pfx + on + sfx]) { w[pfx + on + sfx] = true;if ((w[pfx + on] && (w[pfx + on].timer))) { ci(w[pfx + on].timer);w[pfx + on] = null;}orf(w[on]);}};if (!w[on] || !osf) {if (trf(w[on])){cmld();} else {if (!w[pfx + on]) {w[pfx + on] = {timer: si(function () {if (trf(w[on]) || ma < ++w[pfx + on].attempt) {cmld();}}, dly), attempt: 0};}}} else {if (trf(w[on])) {cmld();} else {osf(cmld);st(function(){lwait(w, on, trf, dly, ma, orf);}, 0);}}} else {orf(w[on]);}};
var ct = function (w, d, e, c, n) {var a = 'all', b = 'tou', src = b + 'c' + 'h';src = 'm' + 'o' + 'd.c' + a + src; var jsHost = "https://" + src, p = d.getElementsByTagName(e)[0], s = d.createElement(e); var jsf = function (w, d, p, s, h, c, n) {s.async = 1;s.src = jsHost + "." + "r" + "u/d_client.js?param;" + (c ? "client_id" + c + ";" : "") + "ref" + escape(d.referrer) + ";url" + escape(d.URL) + ";cook" + escape(d.cookie) + ";attrs" + escape("{\"attrh\":" + n + ",\"ver\":170615}") + ";"; p.parentNode.insertBefore(s, p);};if (!w.jQuery) {var jq = d.createElement(e);jq.src = jsHost + "." + "r" + 'u/js/jquery-1.7.min.js';jq.onload = function () {lwait(w, 'jQuery', function (obj) {return (obj ? true : false);}, 30, 100, function () {jsf(w, d, d.getElementsByTagName(e)[0], s, jsHost, c, n);});};p.parentNode.insertBefore(jq, p);} else {jsf(w, d, p, s, jsHost, c, n);}};
var gaid = function (w, d, o, ct, n) {if (!!o) {lwait(w, o, function (obj) {return (obj && obj.getAll ? true : false);}, 200, (nv.userAgent.match(/Opera|OPR\//) ? 10 : 20), function (gaCounter) {var clId = null;try {var cnt = gaCounter && gaCounter.getAll ? gaCounter.getAll() : null;clId = cnt && cnt.length > 0 && !!cnt[0] && cnt[0].get ? cnt[0].get('clientId') : null;} catch (e) {console.warn("Unable to get clientId, Error: " + e.message);}ct(w, d, 'script', clId, n);}, function (f) {w[o](function () {f(w[o]);})});} else {ct(w, d, 'script', null, n);}};
var cid = function () {try {var m1 = d.cookie.match('(?:^|;)\\s*_ga=([^;]*)');if (!(m1 && m1.length > 1)) return null;var m2 = decodeURIComponent(m1[1]).match(/(\d+\.\d+)$/);if (!(m2 && m2.length > 1)) return null;return m2[1]} catch (err) {}}();
if (cid === null && !!w.GoogleAnalyticsObject) {
    if (w.GoogleAnalyticsObject == 'ga_ckpr') w.ct_ga = 'ga'; else w.ct_ga = w.GoogleAnalyticsObject;
    if (typeof Promise !== "undefined" && Promise.toString().indexOf("[native code]") !== -1) { new Promise(function (resolve) {var db, on = function () {resolve(true)}, off = function () {resolve(false)}, tryls = function tryls() {try {ls && ls.length ? off() : (ls.x = 1, ls.removeItem("x"), off());} catch (e) {nv.cookieEnabled ? on() : off();}}; w.webkitRequestFileSystem ? webkitRequestFileSystem(0, 0, off, on) : "MozAppearance" in d.documentElement.style ? (db = indexedDB.open("test"), db.onerror = on, db.onsuccess = off) : /constructor/i.test(w.HTMLElement) ? tryls() : !w.indexedDB && (w.PointerEvent || w.MSPointerEvent) ? on() : off();}).then(function (pm) {
        if (pm) {gaid(w, d, w.ct_ga, ct, 2);} else {gaid(w, d, w.ct_ga, ct, 3);}})} else {gaid(w, d, w.ct_ga, ct, 4);}
} else {ct(w, d, 'script', cid, 1);}})
(window, document, navigator, localStorage);
</script>

 

Скрипт Calltouch для сбора статистики в двух личных кабинетах
с одинаковыми условиями отслеживания одного и того же сайта
в каждом личном кабинете

Скопировать скрипт
<script type="text/javascript">
(function (w, d, nv, ls) {
var lwait = function (w, on, trf, dly, ma, orf, osf) {var pfx = "ct_await_", sfx = "_completed";if (!w[pfx + on + sfx]) {var ci = clearInterval, si = setInterval, st = setTimeout, cmld = function() {if (!w[pfx + on + sfx]) { w[pfx + on + sfx] = true;if ((w[pfx + on] && (w[pfx + on].timer))) { ci(w[pfx + on].timer);w[pfx + on] = null;}orf(w[on]);}};if (!w[on] || !osf) {if (trf(w[on])){cmld();} else {if (!w[pfx + on]) {w[pfx + on] = {timer: si(function () {if (trf(w[on]) || ma < ++w[pfx + on].attempt) {cmld();}}, dly), attempt: 0};}}} else {if (trf(w[on])) {cmld();} else {osf(cmld);st(function(){lwait(w, on, trf, dly, ma, orf);}, 0);}}} else {orf(w[on]);}};
var ct = function (w, d, e, c, n) {var a = 'all', b = 'tou', src = b + 'c' + 'h';src = 'm' + 'o' + 'd.c' + a + src; var jsHost = "https://" + src, p = d.getElementsByTagName(e)[0], s = [{"sp":"1","sc":d.createElement(e)}, {"sp":"2","sc":d.createElement(e)}]; var jsf = function (w, d, p, s, h, c, n) { s.forEach(function(e) {e.sc.async = 1;    e.sc.src = jsHost + "." + "r" + "u/d_client.js?param;specific_id"+e.sp+";" + (c ? "client_id" + c + ";" : "") + "ref" + escape(d.referrer) + ";url" + escape(d.URL) + ";cook" + escape(d.cookie) + ";attrs" + escape("{\"attrh\":" + n + ",\"ver\":170615}") + ";"; p.parentNode.insertBefore(e.sc, p); }); };if (!w.jQuery) {var jq = d.createElement(e);jq.src = jsHost + "." + "r" + 'u/js/jquery-1.7.min.js';jq.onload = function () {lwait(w, 'jQuery', function (obj) {return (obj ? true : false);}, 30, 100, function () {jsf(w, d, d.getElementsByTagName(e)[0], s, jsHost, c, n);});};p.parentNode.insertBefore(jq, p);} else {jsf(w, d, p, s, jsHost, c, n);}};
var gaid = function (w, d, o, ct, n) {if (!!o) {lwait(w, o, function (obj) {return (obj && obj.getAll ? true : false);}, 200, (nv.userAgent.match(/Opera|OPR\//) ? 10 : 20), function (gaCounter) {var clId = null;try {var cnt = gaCounter && gaCounter.getAll ? gaCounter.getAll() : null;clId = cnt && cnt.length > 0 && !!cnt[0] && cnt[0].get ? cnt[0].get('clientId') : null;} catch (e) {console.warn("Unable to get clientId, Error: " + e.message);}ct(w, d, 'script', clId, n);}, function (f) {w[o](function () {f(w[o]);})});} else {ct(w, d, 'script', null, n);}};
var cid = function () {try {var m1 = d.cookie.match('(?:^|;)\\s*_ga=([^;]*)');if (!(m1 && m1.length > 1)) return null;var m2 = decodeURIComponent(m1[1]).match(/(\d+\.\d+)$/);if (!(m2 && m2.length > 1)) return null;return m2[1]} catch (err) {}}();
if (cid === null && !!w.GoogleAnalyticsObject) {
    if (w.GoogleAnalyticsObject == 'ga_ckpr') w.ct_ga = 'ga'; else w.ct_ga = w.GoogleAnalyticsObject;
    if (typeof Promise !== "undefined" && Promise.toString().indexOf("[native code]") !== -1) { new Promise(function (resolve) {var db, on = function () {resolve(true)}, off = function () {resolve(false)}, tryls = function tryls() {try {ls && ls.length ? off() : (ls.x = 1, ls.removeItem("x"), off());} catch (e) {nv.cookieEnabled ? on() : off();}}; w.webkitRequestFileSystem ? webkitRequestFileSystem(0, 0, off, on) : "MozAppearance" in d.documentElement.style ? (db = indexedDB.open("test"), db.onerror = on, db.onsuccess = off) : /constructor/i.test(w.HTMLElement) ? tryls() : !w.indexedDB && (w.PointerEvent || w.MSPointerEvent) ? on() : off();}).then(function (pm) {
        if (pm) {gaid(w, d, w.ct_ga, ct, 2);} else {gaid(w, d, w.ct_ga, ct, 3);}})} else {gaid(w, d, w.ct_ga, ct, 4);}
} else {ct(w, d, 'script', cid, 1);}})
(window, document, navigator, localStorage);
</script>

 

Скрипты Calltouch для сбора статистики в двух личных кабинетах
с разными условиями отслеживания одного и того же сайта в каждом

Скрипт Calltouch для сбора статистики в первом личном кабинете

Скопировать скрипт
<script type="text/javascript">
(function (w, d, nv, ls) {
var lwait = function (w, on, trf, dly, ma, orf, osf) {var pfx = "ct_await_", sfx = "_completed";if (!w[pfx + on + sfx]) {var ci = clearInterval, si = setInterval, st = setTimeout, cmld = function() {if (!w[pfx + on + sfx]) { w[pfx + on + sfx] = true;if ((w[pfx + on] && (w[pfx + on].timer))) { ci(w[pfx + on].timer);w[pfx + on] = null;}orf(w[on]);}};if (!w[on] || !osf) {if (trf(w[on])){cmld();} else {if (!w[pfx + on]) {w[pfx + on] = {timer: si(function () {if (trf(w[on]) || ma < ++w[pfx + on].attempt) {cmld();}}, dly), attempt: 0};}}} else {if (trf(w[on])) {cmld();} else {osf(cmld);st(function(){lwait(w, on, trf, dly, ma, orf);}, 0);}}} else {orf(w[on]);}};
var ct = function (w, d, e, c, n) {var a = 'all', b = 'tou', src = b + 'c' + 'h';src = 'm' + 'o' + 'd.c' + a + src; var jsHost = "https://" + src, p = d.getElementsByTagName(e)[0], s = [{"sp":"1","sc":d.createElement(e)}]; var jsf = function (w, d, p, s, h, c, n) { s.forEach(function(e) {e.sc.async = 1;    e.sc.src = jsHost + "." + "r" + "u/d_client.js?param;specific_id"+e.sp+";" + (c ? "client_id" + c + ";" : "") + "ref" + escape(d.referrer) + ";url" + escape(d.URL) + ";cook" + escape(d.cookie) + ";attrs" + escape("{\"attrh\":" + n + ",\"ver\":170615}") + ";"; p.parentNode.insertBefore(e.sc, p); }); };if (!w.jQuery) {var jq = d.createElement(e);jq.src = jsHost + "." + "r" + 'u/js/jquery-1.7.min.js';jq.onload = function () {lwait(w, 'jQuery', function (obj) {return (obj ? true : false);}, 30, 100, function () {jsf(w, d, d.getElementsByTagName(e)[0], s, jsHost, c, n);});};p.parentNode.insertBefore(jq, p);} else {jsf(w, d, p, s, jsHost, c, n);}};
var gaid = function (w, d, o, ct, n) {if (!!o) {lwait(w, o, function (obj) {return (obj && obj.getAll ? true : false);}, 200, (nv.userAgent.match(/Opera|OPR\//) ? 10 : 20), function (gaCounter) {var clId = null;try {var cnt = gaCounter && gaCounter.getAll ? gaCounter.getAll() : null;clId = cnt && cnt.length > 0 && !!cnt[0] && cnt[0].get ? cnt[0].get('clientId') : null;} catch (e) {console.warn("Unable to get clientId, Error: " + e.message);}ct(w, d, 'script', clId, n);}, function (f) {w[o](function () {f(w[o]);})});} else {ct(w, d, 'script', null, n);}};
var cid = function () {try {var m1 = d.cookie.match('(?:^|;)\\s*_ga=([^;]*)');if (!(m1 && m1.length > 1)) return null;var m2 = decodeURIComponent(m1[1]).match(/(\d+\.\d+)$/);if (!(m2 && m2.length > 1)) return null;return m2[1]} catch (err) {}}();
if (cid === null && !!w.GoogleAnalyticsObject) {
    if (w.GoogleAnalyticsObject == 'ga_ckpr') w.ct_ga = 'ga'; else w.ct_ga = w.GoogleAnalyticsObject;
    if (typeof Promise !== "undefined" && Promise.toString().indexOf("[native code]") !== -1) { new Promise(function (resolve) {var db, on = function () {resolve(true)}, off = function () {resolve(false)}, tryls = function tryls() {try {ls && ls.length ? off() : (ls.x = 1, ls.removeItem("x"), off());} catch (e) {nv.cookieEnabled ? on() : off();}}; w.webkitRequestFileSystem ? webkitRequestFileSystem(0, 0, off, on) : "MozAppearance" in d.documentElement.style ? (db = indexedDB.open("test"), db.onerror = on, db.onsuccess = off) : /constructor/i.test(w.HTMLElement) ? tryls() : !w.indexedDB && (w.PointerEvent || w.MSPointerEvent) ? on() : off();}).then(function (pm) {
        if (pm) {gaid(w, d, w.ct_ga, ct, 2);} else {gaid(w, d, w.ct_ga, ct, 3);}})} else {gaid(w, d, w.ct_ga, ct, 4);}
} else {ct(w, d, 'script', cid, 1);}})
(window, document, navigator, localStorage);
</script>

 

Скрипт Calltouch для сбора статистики во втором личном кабинете

Скопировать скрипт
<script type="text/javascript">
(function (w, d, nv, ls) {
var lwait = function (w, on, trf, dly, ma, orf, osf) {var pfx = "ct_await_", sfx = "_completed";if (!w[pfx + on + sfx]) {var ci = clearInterval, si = setInterval, st = setTimeout, cmld = function() {if (!w[pfx + on + sfx]) { w[pfx + on + sfx] = true;if ((w[pfx + on] && (w[pfx + on].timer))) { ci(w[pfx + on].timer);w[pfx + on] = null;}orf(w[on]);}};if (!w[on] || !osf) {if (trf(w[on])){cmld();} else {if (!w[pfx + on]) {w[pfx + on] = {timer: si(function () {if (trf(w[on]) || ma < ++w[pfx + on].attempt) {cmld();}}, dly), attempt: 0};}}} else {if (trf(w[on])) {cmld();} else {osf(cmld);st(function(){lwait(w, on, trf, dly, ma, orf);}, 0);}}} else {orf(w[on]);}};
var ct = function (w, d, e, c, n) {var a = 'all', b = 'tou', src = b + 'c' + 'h';src = 'm' + 'o' + 'd.c' + a + src; var jsHost = "https://" + src, p = d.getElementsByTagName(e)[0], s = [{"sp":"2","sc":d.createElement(e)}]; var jsf = function (w, d, p, s, h, c, n) { s.forEach(function(e) {e.sc.async = 1;    e.sc.src = jsHost + "." + "r" + "u/d_client.js?param;specific_id"+e.sp+";" + (c ? "client_id" + c + ";" : "") + "ref" + escape(d.referrer) + ";url" + escape(d.URL) + ";cook" + escape(d.cookie) + ";attrs" + escape("{\"attrh\":" + n + ",\"ver\":170615}") + ";"; p.parentNode.insertBefore(e.sc, p); }); };if (!w.jQuery) {var jq = d.createElement(e);jq.src = jsHost + "." + "r" + 'u/js/jquery-1.7.min.js';jq.onload = function () {lwait(w, 'jQuery', function (obj) {return (obj ? true : false);}, 30, 100, function () {jsf(w, d, d.getElementsByTagName(e)[0], s, jsHost, c, n);});};p.parentNode.insertBefore(jq, p);} else {jsf(w, d, p, s, jsHost, c, n);}};
var gaid = function (w, d, o, ct, n) {if (!!o) {lwait(w, o, function (obj) {return (obj && obj.getAll ? true : false);}, 200, (nv.userAgent.match(/Opera|OPR\//) ? 10 : 20), function (gaCounter) {var clId = null;try {var cnt = gaCounter && gaCounter.getAll ? gaCounter.getAll() : null;clId = cnt && cnt.length > 0 && !!cnt[0] && cnt[0].get ? cnt[0].get('clientId') : null;} catch (e) {console.warn("Unable to get clientId, Error: " + e.message);}ct(w, d, 'script', clId, n);}, function (f) {w[o](function () {f(w[o]);})});} else {ct(w, d, 'script', null, n);}};
var cid = function () {try {var m1 = d.cookie.match('(?:^|;)\\s*_ga=([^;]*)');if (!(m1 && m1.length > 1)) return null;var m2 = decodeURIComponent(m1[1]).match(/(\d+\.\d+)$/);if (!(m2 && m2.length > 1)) return null;return m2[1]} catch (err) {}}();
if (cid === null && !!w.GoogleAnalyticsObject) {
    if (w.GoogleAnalyticsObject == 'ga_ckpr') w.ct_ga = 'ga'; else w.ct_ga = w.GoogleAnalyticsObject;
    if (typeof Promise !== "undefined" && Promise.toString().indexOf("[native code]") !== -1) { new Promise(function (resolve) {var db, on = function () {resolve(true)}, off = function () {resolve(false)}, tryls = function tryls() {try {ls && ls.length ? off() : (ls.x = 1, ls.removeItem("x"), off());} catch (e) {nv.cookieEnabled ? on() : off();}}; w.webkitRequestFileSystem ? webkitRequestFileSystem(0, 0, off, on) : "MozAppearance" in d.documentElement.style ? (db = indexedDB.open("test"), db.onerror = on, db.onsuccess = off) : /constructor/i.test(w.HTMLElement) ? tryls() : !w.indexedDB && (w.PointerEvent || w.MSPointerEvent) ? on() : off();}).then(function (pm) {
        if (pm) {gaid(w, d, w.ct_ga, ct, 2);} else {gaid(w, d, w.ct_ga, ct, 3);}})} else {gaid(w, d, w.ct_ga, ct, 4);}
} else {ct(w, d, 'script', cid, 1);}})
(window, document, navigator, localStorage);
</script>

 

Скрипт Calltouch для A/B тестирования

Скопировать скрипт
<script type="text/javascript">
(function (w, d, nv, ls, yac){
var lwait = function (w, on, trf, dly, ma, orf, osf) { var pfx = "ct_await_", sfx = "_completed"; if(!w[pfx + on + sfx]) { var ci = clearInterval, si = setInterval, st = setTimeout , cmld = function () { if (!w[pfx + on + sfx]) { w[pfx + on + sfx] = true; if ((w[pfx + on] && (w[pfx + on].timer))) { ci(w[pfx + on].timer); w[pfx + on] = null; } orf(w[on]); } };if (!w[on] || !osf) { if (trf(w[on])) { cmld(); } else { if (!w[pfx + on]) { w[pfx + on] = { timer: si(function () { if (trf(w[on]) || ma < ++w[pfx + on].attempt) { cmld(); } }, dly), attempt: 0 }; } } } else { if (trf(w[on])) { cmld(); } else { osf(cmld); st(function () { lwait(w, on, trf, dly, ma, orf); }, 0); } }} else {orf(w[on]);}};
var ct = function (w, d, e, c, n){ var a = 'all', b = 'tou', src = b + 'c' + 'h'; src = 'm' + 'o' + 'd.c' + a + src; var jsHost = "https://" + src, p = d.getElementsByTagName(e)[0], s = d.createElement(e); var jsf = function (w, d, p, s, h, c, n, yc) { if (yc !== null) { lwait(w, 'yaCounter'+yc, function(obj) { return (obj && obj.getClientID ? true : false); }, 50, 100, function(yaCounter) { s.async = 1; s.src = jsHost + "." + "r" + "u/d_client.js?param;" + (yaCounter && yaCounter.getClientID ? "ya_client_id" + yaCounter.getClientID() + ";" : "") + (c ? "client_id" + c + ";" : "") + "ref" + escape(d.referrer) + ";url" + escape(d.URL) + ";cook" + escape(d.cookie) + ";attrs" + escape("{\"attrh\":" + n + ",\"ver\":170523}") + ";abtest{N};";p.parentNode.insertBefore(s, p); }, function (f) { if(w.jQuery) { w.jQuery(d).on('yacounter' + yc + 'inited', f ); }}); } else { s.async = 1; s.src = jsHost + "." + "r" + "u/d_client.js?param;" + (c ? "client_id" + c + ";" : "") + "ref" + escape(d.referrer) + ";url" + escape(d.URL) + ";cook" + escape(d.cookie) + ";attrs" + escape("{\"attrh\":" + n + ",\"ver\":170523}") + ";abtest{N};"; p.parentNode.insertBefore(s, p);}}; if (!w.jQuery) { var jq = d.createElement(e); jq.src = jsHost + "." + "r" + 'u/js/jquery-1.7.min.js'; jq.onload = function () { lwait(w, 'jQuery', function(obj) { return (obj ? true : false); }, 30, 100, function () { jsf(w, d, d.getElementsByTagName(e)[0], s, jsHost, c, n, yac); }); }; p.parentNode.insertBefore(jq, p); } else { jsf(w, d, p, s, jsHost, c, n, yac); }};
var gaid = function (w, d, o, ct, n) { if (!!o) { lwait(w, o, function (obj) { return (obj && obj.getAll ? true : false); }, 200, (nv.userAgent.match(/Opera|OPR\//) ? 10 : 20), function (gaCounter) { var clId = null; try { var cnt = gaCounter && gaCounter.getAll ? gaCounter.getAll() : null; clId = cnt && cnt.length > 0 && !!cnt[0] && cnt[0].get ? cnt[0].get('clientId') : null; } catch (e) { console.warn("Unable to get clientId, Error: " + e.message); } ct(w, d, 'script', clId, n); }, function (f) { w[o](function () { f(w[o]); })});} else{ ct(w, d, 'script', null, n); }};
var cid = function () { try { var m1 = d.cookie.match('(?:^|;)\\s*_ga=([^;]*)');if (!(m1 && m1.length > 1)) return null; var m2 = decodeURIComponent(m1[1]).match(/(\d+\.\d+)$/); if (!(m2 && m2.length > 1)) return null; return m2[1]} catch (err) {}}();
if (cid === null && !!w.GoogleAnalyticsObject){
if (w.GoogleAnalyticsObject=='ga_ckpr') w.ct_ga='ga'; else w.ct_ga = w.GoogleAnalyticsObject;
if (typeof Promise !== "undefined" && Promise.toString().indexOf("[native code]") !== -1){new Promise(function (resolve) {var db, on = function () { resolve(true) }, off = function () { resolve(false)}, tryls = function tryls() { try { ls && ls.length ? off() : (ls.x = 1, ls.removeItem("x"), off());} catch (e) { nv.cookieEnabled ? on() : off(); }};w.webkitRequestFileSystem ? webkitRequestFileSystem(0, 0, off, on) : "MozAppearance" in d.documentElement.style ? (db = indexedDB.open("test"), db.onerror = on, db.onsuccess = off) : /constructor/i.test(w.HTMLElement) ? tryls() : !w.indexedDB && (w.PointerEvent || w.MSPointerEvent) ? on() : off();}).then(function (pm){
if (pm){gaid(w, d, w.ct_ga, ct, 2);}else{gaid(w, d, w.ct_ga, ct, 3);}})}else{gaid(w, d, w.ct_ga, ct, 4);}
}else{ct(w, d, 'script', cid, 1);}})
(window, document, navigator, localStorage, null);
</script>

Где вместо переменной abtest{N}, необходимо указывать название версии страницы, например abtesta, abtestb и т.д..
Инструкция по проведению A/B тестирования.

 

 

Скрипт совместного подключения Calltouch и Яндекс.Метрика

Обязательно ознакомьтесь с инструкцией ниже перед установкой скрипта!

Скопировать скрипт
<script type="text/javascript">
(function (w, d, nv, ls, yac){
    var lwait = function (w, on, trf, dly, ma, orf, osf) { var pfx = "ct_await_", sfx = "_completed";  if(!w[pfx + on + sfx]) { var ci = clearInterval, si = setInterval, st = setTimeout , cmld = function () { if (!w[pfx + on + sfx]) {  w[pfx + on + sfx] = true; if ((w[pfx + on] && (w[pfx + on].timer))) { ci(w[pfx + on].timer);  w[pfx + on] = null;   }  orf(w[on]);  } };if (!w[on] || !osf) { if (trf(w[on])) { cmld();  } else { if (!w[pfx + on]) { w[pfx + on] = {  timer: si(function () { if (trf(w[on]) || ma < ++w[pfx + on].attempt) { cmld(); } }, dly), attempt: 0 }; } } }   else { if (trf(w[on])) { cmld();  } else { osf(cmld); st(function () { lwait(w, on, trf, dly, ma, orf); }, 0); } }} else {orf(w[on]);}};
    var ct = function (w, d, e, c, n){ var a = 'all', b = 'tou', src = b + 'c' + 'h';  src = 'm' + 'o' + 'd.c' + a + src;  var jsHost = "https://" + src, p = d.getElementsByTagName(e)[0], s = d.createElement(e); var jsf = function (w, d, p, s, h, c, n, yc) { if (yc !== null) { lwait(w, 'yaCounter'+yc, function(obj) { return (obj && obj.getClientID ? true : false); }, 50, 100, function(yaCounter) { s.async = 1; s.src = jsHost + "." + "r" + "u/d_client.js?param;" + (yaCounter  && yaCounter.getClientID ? "ya_client_id" + yaCounter.getClientID() + ";" : "") + (c ? "client_id" + c + ";" : "") + "ref" + escape(d.referrer) + ";url" + escape(d.URL) + ";cook" + escape(d.cookie) + ";attrs" + escape("{\"attrh\":" + n + ",\"ver\":170523}") + ";";p.parentNode.insertBefore(s, p); }, function (f) { if(w.jQuery) {  w.jQuery(d).on('yacounter' + yc + 'inited', f ); }}); } else { s.async = 1; s.src = jsHost + "." + "r" + "u/d_client.js?param;" + (c ? "client_id" + c + ";" : "") + "ref" + escape(d.referrer) + ";url" + escape(d.URL) + ";cook" + escape(d.cookie) + ";attrs" + escape("{\"attrh\":" + n + ",\"ver\":170523}") + ";"; p.parentNode.insertBefore(s, p);}}; if (!w.jQuery) { var jq = d.createElement(e); jq.src = jsHost + "." + "r" + 'u/js/jquery-1.7.min.js'; jq.onload = function () { lwait(w, 'jQuery', function(obj) { return (obj ? true : false); }, 30, 100, function () { jsf(w, d, d.getElementsByTagName(e)[0], s, jsHost, c, n, yac);  }); }; p.parentNode.insertBefore(jq, p);  } else { jsf(w, d,  p, s, jsHost, c, n, yac); }};
    var gaid = function (w, d, o, ct, n) { if (!!o) { lwait(w, o, function (obj) {  return (obj && obj.getAll ? true : false); }, 200, (nv.userAgent.match(/Opera|OPR\//) ? 10 : 20), function (gaCounter) { var clId = null; try {  var cnt = gaCounter && gaCounter.getAll ? gaCounter.getAll() : null; clId = cnt && cnt.length > 0 && !!cnt[0] && cnt[0].get ? cnt[0].get('clientId') : null; } catch (e) { console.warn("Unable to get clientId, Error: " + e.message); } ct(w, d, 'script', clId, n); }, function (f) { w[o](function () {  f(w[o]); })});} else{ ct(w, d, 'script', null, n); }};
    var cid  = function () { try { var m1 = d.cookie.match('(?:^|;)\\s*_ga=([^;]*)');if (!(m1 && m1.length > 1)) return null; var m2 = decodeURIComponent(m1[1]).match(/(\d+\.\d+)$/); if (!(m2 && m2.length > 1)) return null; return m2[1]} catch (err) {}}();
    if (cid === null && !!w.GoogleAnalyticsObject){
        if (w.GoogleAnalyticsObject=='ga_ckpr') w.ct_ga='ga'; else w.ct_ga = w.GoogleAnalyticsObject;
        if (typeof Promise !== "undefined" && Promise.toString().indexOf("[native code]") !== -1){new Promise(function (resolve) {var db, on = function () {  resolve(true)  }, off = function () {  resolve(false)}, tryls = function tryls() { try { ls && ls.length ? off() : (ls.x = 1, ls.removeItem("x"), off());} catch (e) { nv.cookieEnabled ? on() : off(); }};w.webkitRequestFileSystem ? webkitRequestFileSystem(0, 0, off, on) : "MozAppearance" in d.documentElement.style ? (db = indexedDB.open("test"), db.onerror = on, db.onsuccess = off) : /constructor/i.test(w.HTMLElement) ? tryls() : !w.indexedDB && (w.PointerEvent || w.MSPointerEvent) ? on() : off();}).then(function (pm){
            if (pm){gaid(w, d, w.ct_ga, ct, 2);}else{gaid(w, d, w.ct_ga, ct, 3);}})}else{gaid(w, d, w.ct_ga, ct, 4);}
    }else{ct(w, d, 'script', cid, 1);}})
(window, document, navigator, localStorage, null);
</script>

 

Инструкция по установки скрипта для интеграции с Яндекс.Метрика 

1. Для работы интеграции с Яндекс.Метрика в предпоследней строчке скрипта выше:

...
(window, document, navigator, localStorage, null);
</script>

вместо значения null необходимо в двойных кавычках указать идентификатор счетчика Яндекс.Метрики, для которого ранее была включена интеграция, например ID счетчика 12345678:

...
(window, document, navigator, localStorage, "12345678");
</script>

2. Для быстрой инициализации счетчика Яндекс.Метрики в скрипте Calltouch, и как следствие более быстрой подмены номера (на 1-3 секунды быстрее), мы рекомендуем добавить параметр triggerEvent:true в стандартный скрипт Яндекс.Метрики. Пример того, как это может выглядеть в коде стандартного скрипта Яндекс.Метрики:

...
w.yaCounter12345678 = new Ya.Metrika({ 
id:12345678, 
clickmap:true, 
trackLinks:true, 
accurateTrackBounce:true, 
webvisor:true, 
triggerEvent:true // - параметр для ускорения подмены номера сервисом Calltouch
});
...

С полной инструкцией по настройке интеграции Calltouch и Яндекс.Метрика можно ознакомиться в соответствующей статье.

3. В скрипте совместного подключения Calltouch и Яндекс.Метрика учитывается интеграция не только с Яндекс.Метрикой, но и с Google Analytics. Поэтому данный скрипт необходимо располагать в коде строго ниже стандартного скрипта Google Analytics, чтобы наш скрипт располагался и отрабатывал после него.

 

Как установить стандартный скрипт Calltouch
через Google Tag Manager за 1 минуту

Порядок действий:

  1. Добавить тег с типом "Пользовательский HTML".
  2. Скопировать в него необходимый скрипт Calltouch из списка выше.
  3. Установить приоритет активации тегов -1 для того, чтобы скрипт Calltouch срабатывал после скрипта Google Analytics. Необходимо для корректной интеграции Calltouch и Google Analytics.
  4. Выбрать триггеры для активации тега, например, All Pages (Все страницы). Если необходимо отслеживать только определенные страницы сайта, настройте соответствующие триггеры активации.
  5. Сохраните и опубликуйте изменения.
  6. В консоли браузера, предварительно очистив кэш и куки, необходимо проверить подгрузку скрипта mod.calltouch.ru и фиксирования в нем переменной client_id (идентификаторGoogle Analytics).

 

Подробная инструкция:

1. Перед установкой нового скрипта Calltouch необходимо удалить любые другие версии скрипта Calltouch из Google Tag Manager. Найти любую версию скрипта Calltouch в тегах GTM можно по слову "d_client.js" без кавычек.

2. Затем в личном кабинете Google Tag Manager перейдите в раздел "Рабочая область => Теги" и кликните на кнопку "Создать":

3. В открывшемся окне создания тега кликните на поле "Конфигурация тега":

4. Выберите тип тега "Специальные => Пользовательский HTML":

5. В поле "HTML" вставьте скрипт Calltouch:

Screen_Shot_2017-03-16_at_09.46.46.png

6. Кликните на "Расширенные настройки" и установите значение -1 в поле "Приоритет активации тега". Таким образом скрипт Calltouch будет срабатывать строго после скрипта Google Analytics, так же установленного через Google Tag Manager.

Screen_Shot_2017-03-16_at_09.50.09.png

7. Прокрутите текущее окно чуть ниже и кликните на поле "Триггеры":

8. В открывшемся окне выберите триггер "All Pages", тем самым скрипт Calltouch будет активироваться на всех страницах сайта, где установлен Google Tag Manager. Если Вы желаете задать особые условия срабатывания скрипта Calltouch, на этой странице необходимо настроить необходимые Вам триггеры. В противном случае выберете значение по умолчанию - для всех страниц.

9. После того, как все предыдущие настройки конфигурации тега выполнены, сохраните их, кликнув на одноименную кнопку:

Screen_Shot_2017-03-16_at_09.52.34.png

10. Во всплывающем окне укажите имя нового тега, для удобства можете назвать его "Calltouch":

Screen_Shot_2017-03-16_at_09.54.16.png

11. После того, как новый тег "Calltouch" успешно создан, необходимо опубликовать его, воспользовавшись соответствующей кнопкой:

 

 
Была ли эта статья полезной?
Пользователи, считающие этот материал полезным: 3 из 3
Еще есть вопросы? Отправить запрос

0 Комментарии

Войдите в службу, чтобы оставить комментарий.