mod: вынести cookies и счётчики в static js

This commit is contained in:
2026-04-12 16:45:29 +03:00
parent 3f72d2e963
commit 038b53e74d
5 changed files with 134 additions and 27 deletions

View File

@@ -0,0 +1,67 @@
(function (window, document) {
'use strict';
// Защита от повторной инициализации, если файл случайно подключат дважды.
if (window.__cadpointFooterCountersLoaded) {
return;
}
window.__cadpointFooterCountersLoaded = true;
function appendScript(src, id) {
// Не создаём дубликаты, если скрипт уже есть в DOM.
if (id && document.getElementById(id)) {
return null;
}
var script = document.createElement('script');
script.async = true;
script.src = src;
if (id) {
script.id = id;
}
(document.head || document.body).appendChild(script);
return script;
}
function initGoogleAnalytics() {
// Поддерживаем старый UA-код, чтобы не ломать текущую статистику.
window.dataLayer = window.dataLayer || [];
window.gtag = window.gtag || function gtag() {
window.dataLayer.push(arguments);
};
window.gtag('js', new Date());
window.gtag('config', 'UA-9116991-1');
appendScript('https://www.googletagmanager.com/gtag/js?id=UA-9116991-1', 'cadpoint-gtag-js');
}
function initYandexMetrika() {
// Повторяем стандартный паттерн Metrika: сначала очередь вызовов, потом загрузка внешнего файла.
window.ym = window.ym || function ym() {
(window.ym.a = window.ym.a || []).push(arguments);
};
window.ym.l = 1 * new Date();
window.ym(198477, 'init', {
clickmap: true,
trackLinks: true,
accurateTrackBounce: true,
webvisor: true,
});
appendScript('https://mc.yandex.ru/metrika/tag.js', 'cadpoint-yandex-metrika-js');
}
function initMailRuCounter() {
// Rating Mail.ru тоже любит сначала получить очередь событий, а затем уже внешний код.
window._tmr = window._tmr || [];
window._tmr.push({
id: '1612438',
type: 'pageView',
start: (new Date()).getTime(),
});
appendScript('https://top-fwz1.mail.ru/js/code.js', 'topmailru-code');
}
// Вызываем функции-счетчики
initGoogleAnalytics();
initYandexMetrika();
initMailRuCounter();
})(window, document);