Подключение Яндекс метрики в SvelteKit - bekkaryuk.ru

Подключение Яндекс метрики в SvelteKit

1 января 2025 10:56

Установка кода метрики

Скопируйте код метрики из личного кабинета, и вставьте в файл app.html Вашего проекта в блок head

app.html

<!doctype html>
<html lang="en">
	<head>
		...
		<!-- Yandex.Metrika counter -->
		<script type="text/javascript">
			(function (m, e, t, r, i, k, a) {
				m[i] =
					m[i] ||
					function () {
						(m[i].a = m[i].a || []).push(arguments);
					};
				m[i].l = 1 * new Date();
				for (var j = 0; j < document.scripts.length; j++) {
					if (document.scripts[j].src === r) {
						return;
					}
				}
				(k = e.createElement(t)), (a = e.getElementsByTagName(t)[0]), (k.async = 1), (k.src = r), a.parentNode.insertBefore(k, a);
			})(window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");

			ym(XXXXXXXX, "init", {
				defer: true,
				clickmap: true,
				trackLinks: true,
				accurateTrackBounce: true
			});
		</script>
		<noscript
			><div><img src="https://mc.yandex.ru/watch/97227129" style="position: absolute; left: -9999px" alt="" /></div
		></noscript>
		<!-- /Yandex.Metrika counter -->
		...
	</head>
	<body data-sveltekit-preload-data="hover">
		<div style="display: contents">%sveltekit.body%</div>
	</body>
</html>

Регистрация событий

Для регистрации события перехода по страницам передайте коллбэк с вызовом ya() в функцию afterNavigate из $app/navigation внутри Вашего +layout.svelte

+layout.svelte

<script lang="ts">
	import { browser } from "$app/environment";
	import { afterNavigate } from "$app/navigation";
	let { children } = $props();
	if (browser) {
		// @ts-ignore
		afterNavigate(() => ym(97227129, "hit", window.location.href));
	}
</script>