24 lines
1.1 KiB
TypeScript
24 lines
1.1 KiB
TypeScript
import Script from "next/script";
|
|
|
|
/** Yandex.Metrika counter; loads after hydration, with the official noscript pixel. */
|
|
export function YandexMetrika({ id }: { id: string }) {
|
|
if (!id) return null;
|
|
const src = `https://mc.yandex.ru/metrika/tag.js?id=${id}`;
|
|
return (
|
|
<>
|
|
<Script id="yandex-metrika" strategy="afterInteractive">
|
|
{`(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',${JSON.stringify(src)},'ym');ym(${id},'init',{ssr:true,webvisor:true,clickmap:true,ecommerce:"dataLayer",referrer:document.referrer,url:location.href,accurateTrackBounce:true,trackLinks:true});`}
|
|
</Script>
|
|
<noscript>
|
|
<div>
|
|
<img
|
|
src={`https://mc.yandex.ru/watch/${id}`}
|
|
style={{ position: "absolute", left: "-9999px" }}
|
|
alt=""
|
|
/>
|
|
</div>
|
|
</noscript>
|
|
</>
|
|
);
|
|
}
|