generated from autoblog/Advogados
85 lines
2.8 KiB
TypeScript
85 lines
2.8 KiB
TypeScript
import { useEffect } from 'react';
|
|
import { useLocation } from 'react-router-dom';
|
|
|
|
declare global {
|
|
interface Window {
|
|
gtag?: (...args: any[]) => void;
|
|
dataLayer?: any[];
|
|
fbq?: (...args: any[]) => void;
|
|
_fbq?: any;
|
|
}
|
|
}
|
|
|
|
export function Analytics() {
|
|
const location = useLocation();
|
|
|
|
// Inicialização dos Scripts (Executado apenas uma vez)
|
|
useEffect(() => {
|
|
// 1. Google Analytics (GA4)
|
|
const gaId = import.meta.env.VITE_GA_MEASUREMENT_ID;
|
|
if (gaId && !document.getElementById('ga-script')) {
|
|
const script1 = document.createElement('script');
|
|
script1.async = true;
|
|
script1.src = `https://www.googletagmanager.com/gtag/js?id=${gaId}`;
|
|
script1.id = 'ga-script';
|
|
document.head.appendChild(script1);
|
|
|
|
const script2 = document.createElement('script');
|
|
script2.innerHTML = `
|
|
window.dataLayer = window.dataLayer || [];
|
|
function gtag(){dataLayer.push(arguments);}
|
|
gtag('js', new Date());
|
|
gtag('config', '${gaId}');
|
|
`;
|
|
document.head.appendChild(script2);
|
|
}
|
|
|
|
// 2. Facebook Pixel
|
|
const fbPixelId = import.meta.env.VITE_FB_PIXEL_ID;
|
|
if (fbPixelId && !document.getElementById('fb-pixel-script')) {
|
|
const script = document.createElement('script');
|
|
script.id = 'fb-pixel-script';
|
|
script.innerHTML = `
|
|
!function(f,b,e,v,n,t,s)
|
|
{if(f.fbq)return;n=f.fbq=function(){n.callMethod?
|
|
n.callMethod.apply(n,arguments):n.queue.push(arguments)};
|
|
if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';
|
|
n.queue=[];t=b.createElement(e);t.async=!0;
|
|
t.src=v;s=b.getElementsByTagName(e)[0];
|
|
s.parentNode.insertBefore(t,s)}(window, document,'script',
|
|
'https://connect.facebook.net/en_US/fbevents.js');
|
|
fbq('init', '${fbPixelId}');
|
|
fbq('track', 'PageView');
|
|
`;
|
|
document.head.appendChild(script);
|
|
}
|
|
|
|
// 3. Google AdSense
|
|
const adsenseId = import.meta.env.VITE_ADSENSE_CLIENT_ID;
|
|
if (adsenseId && !document.getElementById('adsense-script')) {
|
|
const script = document.createElement('script');
|
|
script.id = 'adsense-script';
|
|
script.async = true;
|
|
script.src = `https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=${adsenseId}`;
|
|
script.crossOrigin = 'anonymous';
|
|
document.head.appendChild(script);
|
|
}
|
|
}, []);
|
|
|
|
// Rastreamento de Mudança de Rota (Page Views)
|
|
useEffect(() => {
|
|
const gaId = import.meta.env.VITE_GA_MEASUREMENT_ID;
|
|
if (gaId && window.gtag) {
|
|
window.gtag('config', gaId, {
|
|
page_path: location.pathname + location.search,
|
|
});
|
|
}
|
|
|
|
const fbPixelId = import.meta.env.VITE_FB_PIXEL_ID;
|
|
if (fbPixelId && typeof window.fbq === 'function') {
|
|
window.fbq('track', 'PageView');
|
|
}
|
|
}, [location]);
|
|
|
|
return null; // Este componente não renderiza nada na tela
|
|
}
|