[DocBreadcrumbs 包装器占位符 - 面包屑上方]
标题下面插入广告
src/components/Carbon/index.tsx
import { useEffect } from 'react';
import './index.css';
function insertAfter(referenceNode, newNode) {
referenceNode.parentNode.insertBefore(newNode, referenceNode.nextSibling);
}
export default function Carbon({
code = 'CEAIV23U',
placement = 'wwwjest-previewcom',
querySelector = 'h1',
customStyle = 'min-height: 100px; margin: 20px 0;',
}) {
useEffect(() => {
try {
var targetElement = document.querySelector(querySelector);
const s = document.createElement('script');
s.id = '_carbonads_js';
s.src = `//cdn.carbonads.com/carbon.js?serve=${code}&placement=${placement}`;
// Add a container below h1 to avoid layout shift
const mountContainer = document.createElement('div');
mountContainer.setAttribute('style', customStyle);
insertAfter(targetElement, mountContainer);
// Mount carbon as a child of mountContainer
mountContainer.appendChild(s);
} catch (error) {
console.error(error);
}
}, []);
return null;
}
然后修改DocItem模板“src\theme\DocItem\Content\index.js”,引入<Carbon />
该代码是一个React组件,用于在网页的H1标题下面插入Carbon广告。Carbon是一个广告服务,可以在网页上显示相关的广告内容。
组件接受以下props参数:
- code:Carbon广告的代码。默认为"CEAIV23U"。
- placement:广告的展示位置。默认为"wwwjest-previewcom"。
- querySelector:选择目标元素的CSS选择器。默认为"h1",表示选择页面中的第一个h1元素作为目标元素。
- customStyle:自定义样式,应用于插入的广告容器。默认为"min-height: 100px; margin: 20px 0;"。
在组件的实现中,使用了React的useEffect钩子函数来在组件挂载后执行代码。在useEffect回调函数中,首先通过document.querySelector方法选择目标元素,然后创建一个<script>元素,设置其id为"_carbonads_js",并将Carbon广告的脚本地址赋值给其src属性。接下来,创建一个容器元素<div>,设置其样式为customStyle指定的自定义样式,然后通过insertAfter函数将容器插入到目标元素的后面,以避免页面布局的变动。最后,将广告脚本作为容器的子元素进行挂载。
整个组件的作用就是在指定的目标元素后插入一个容器,并在容器中加载Carbon广告的脚本,从而在页面上显示广告内容。
请注意,该代码是使用React编写的,如果要在非React项目中使用,需要进行相应的调整。