Spring Campaign Banner
ript> (function() { const trackClick = function() { // Try multiple tracking approaches for better coverage // 1. Direct fetch (same domain) try { fetch('https://preview--brycycletagbuilder-labyrinth.lovable.app/api/track?id=tag_1742424818145_jh581js&event=click') .catch(() => console.log('Click tracked via fetch')); } catch(e) {} // 2. Image beacon (works cross-domain) const img = new Image(); img.src = 'https://preview--brycycletagbuilder-labyrinth.lovable.app/api/track?id=tag_1742424818145_jh581js&event=click&t=' + new Date().getTime(); // 3. PostMessage to parent (works in iframes) try { window.parent.postMessage({ type: 'ad-click', tagId: 'tag_1742424818145_jh581js' }, '*'); } catch(e) {} // 4. LocalStorage event for same-domain communication try { localStorage.setItem('ad_click', 'tag_1742424818145_jh581js_' + new Date().getTime()); } catch(e) {} }; // Expose tracking function globally so it can be called from tag window.trackAdClick = trackClick; // Track impression when loaded const trackImpression = function() { // Similar multi-approach tracking for impressions try { window.parent.postMessage({ type: 'ad-impression', tagId: 'tag_1742424818145_jh581js' }, '*'); } catch(e) {} try { localStorage.setItem('ad_impression', 'tag_1742424818145_jh581js_' + new Date().getTime()); } catch(e) {} }; // Track impression on load if (document.readyState === 'complete') { trackImpression(); } else { window.addEventListener('load', trackImpression); } })();
Spring Campaign Banner