feat: allow displaying fallback when ads are blocked

pull/348/head
Eduardo San Martin Morote 4 years ago
parent cfbba80a0a
commit 1e5d7f8551

@ -133,7 +133,9 @@ const pageClasses = computed(() => {
:key="'carbon' + page.relativePath" :key="'carbon' + page.relativePath"
:code="theme.carbonAds.carbon" :code="theme.carbonAds.carbon"
:placement="theme.carbonAds.placement" :placement="theme.carbonAds.placement"
/> >
<slot name="carbon-ads-blocked"></slot>
</CarbonAds>
</div> </div>
</slot> </slot>
<slot name="page-top" /> <slot name="page-top" />

@ -7,17 +7,32 @@ const { code, placement } = defineProps<{
}>() }>()
const el = ref() const el = ref()
const isBlocked = ref(false)
onMounted(() => { 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') const s = document.createElement('script')
s.id = '_carbonads_js' s.id = '_carbonads_js'
s.src = `//cdn.carbonads.com/carbon.js?serve=${code}&placement=${placement}` s.src = src
el.value.appendChild(s) el.value.appendChild(s)
}) })
</script> </script>
<template> <template>
<div class="carbon-ads" ref="el" /> <div class="carbon-ads" ref="el">
<slot v-if="isBlocked" />
</div>
</template> </template>
<style scoped> <style scoped>

Loading…
Cancel
Save