From e64110f4d1a2530ee3e1c8eab525f5da5dcfb594 Mon Sep 17 00:00:00 2001 From: hobbes7878 Date: Tue, 20 Aug 2024 10:53:29 +0100 Subject: [PATCH] unset ad iframe width from CSS reset. cleanup ads slots onDestroy. Ensure loaded ad scripts aren't already in head --- src/components/AdSlot/AdSlot.svelte | 18 ++++++++++++++++++ src/components/AdSlot/adScripts/loadScript.ts | 3 +++ 2 files changed, 21 insertions(+) diff --git a/src/components/AdSlot/AdSlot.svelte b/src/components/AdSlot/AdSlot.svelte index fc47239c..5ebcf2fc 100644 --- a/src/components/AdSlot/AdSlot.svelte +++ b/src/components/AdSlot/AdSlot.svelte @@ -39,7 +39,25 @@ window.graphicsAdQueue = window.graphicsAdQueue || []; window.graphicsAdQueue.push(adSlot); } + + return () => { + // @ts-ignore + const freestar = window?.freestar; + if (freestar) { + freestar.queue.push(function () { + freestar.deleteAdSlots(adId); + }); + } + }; });
+ + diff --git a/src/components/AdSlot/adScripts/loadScript.ts b/src/components/AdSlot/adScripts/loadScript.ts index 08895a2e..72907a73 100644 --- a/src/components/AdSlot/adScripts/loadScript.ts +++ b/src/components/AdSlot/adScripts/loadScript.ts @@ -6,6 +6,9 @@ interface attributesInterface { export const loadScript = (src: string, attributes?: attributesInterface) => { const { onload, async = true } = attributes || {}; + const existingScript = document.querySelector(`script[src="${src}"]`); + if (existingScript) return; + const script = document.createElement('script'); script.addEventListener('load', onload); script.async = async;