From 1e5d7f8551436b3dc19a83afad4d9788bed2a8ac Mon Sep 17 00:00:00 2001 From: Eduardo San Martin Morote Date: Wed, 4 Aug 2021 17:58:07 +0200 Subject: [PATCH] feat: allow displaying fallback when ads are blocked --- src/client/theme-default/Layout.vue | 4 +++- .../theme-default/components/CarbonAds.vue | 19 +++++++++++++++++-- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/src/client/theme-default/Layout.vue b/src/client/theme-default/Layout.vue index c7803adc..9b53c6e1 100644 --- a/src/client/theme-default/Layout.vue +++ b/src/client/theme-default/Layout.vue @@ -133,7 +133,9 @@ const pageClasses = computed(() => { :key="'carbon' + page.relativePath" :code="theme.carbonAds.carbon" :placement="theme.carbonAds.placement" - /> + > + + diff --git a/src/client/theme-default/components/CarbonAds.vue b/src/client/theme-default/components/CarbonAds.vue index ce2b977d..401295bc 100644 --- a/src/client/theme-default/components/CarbonAds.vue +++ b/src/client/theme-default/components/CarbonAds.vue @@ -7,17 +7,32 @@ const { code, placement } = defineProps<{ }>() const el = ref() +const isBlocked = ref(false) onMounted(() => { + const src = `//cdn.carbonads.com/carbon.js?serve=${code}&placement=${placement}` + fetch('https:' + src, { + method: 'HEAD', + mode: 'no-cors' + }) + .then(() => { + isBlocked.value = false + }) + .catch(() => { + isBlocked.value = true + }) + const s = document.createElement('script') s.id = '_carbonads_js' - s.src = `//cdn.carbonads.com/carbon.js?serve=${code}&placement=${placement}` + s.src = src el.value.appendChild(s) })