You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Docusaurus网页正文区域添加AdSense广告单元?解决代码粘贴后的语法错误问题

在Docusaurus页面正文添加AdSense广告单元的可行方案

当然可以在Docusaurus构建的网页正文区域嵌入AdSense广告!你碰到的Uncaught SyntaxError错误,本质是直接把AdSense原生脚本粘贴到Markdown中时,Docusaurus的MDX解析器会自动转义脚本内容,破坏了原本的语法结构。下面是两个经过验证的靠谱解决办法:

方案1:自定义React组件(最推荐,灵活可控)

Docusaurus原生支持MDX,把AdSense封装成React组件是最稳妥的方式——既能避免解析错误,还能在多个页面复用广告单元,方便统一调整样式。

步骤1:创建AdSense组件

在项目的src/components目录下新建AdSense.js文件,代码如下:

import React, { useEffect } from 'react';

const AdSense = ({ adClient, adSlot, format = 'auto', responsive = true }) => {
  useEffect(() => {
    // 全局只加载一次AdSense脚本,避免重复请求
    if (!window.adsbygoogle) {
      const script = document.createElement('script');
      script.async = true;
      script.src = 'https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js';
      document.body.appendChild(script);
    }

    // 初始化当前广告单元
    (window.adsbygoogle = window.adsbygoogle || []).push({});
  }, [adClient, adSlot]);

  return (
    <ins
      className="adsbygoogle"
      style={{ display: 'block', margin: '2rem 0' }} // 可自定义广告上下间距
      data-ad-client={adClient}
      data-ad-slot={adSlot}
      data-ad-format={format}
      data-full-width-responsive={responsive ? 'true' : 'false'}
    />
  );
};

export default AdSense;

步骤2:在Markdown页面中调用组件

在需要插入广告的Markdown(或MDX)文件里,先导入组件,再在正文合适的位置插入:

---
title: 我的示例页面
---

# 欢迎来到我的技术博客

这里是页面的开头内容,先介绍一下本文的主题...

import AdSense from '@site/src/components/AdSense';

<AdSense adClient="ca-pub-1234567890" adSlot="9876543210" />

这里是广告下方的正文内容,继续讲解相关技术细节...

记得把代码里的ca-pub-xxx和广告单元ID替换成你自己的AdSense账号信息。

方案2:直接嵌入HTML(适合快速测试)

如果不想写组件,也可以直接在Markdown里嵌入HTML代码,但要注意包裹结构,避免MDX解析报错:

<div style="margin: 2rem 0;">
  <script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
  <ins class="adsbygoogle"
       style="display:block"
       data-ad-client="ca-pub-你的客户端ID"
       data-ad-slot="你的广告单元ID"
       data-ad-format="auto"
       data-full-width-responsive="true"></ins>
  <script>(adsbygoogle = window.adsbygoogle || []).push({});</script>
</div>

不过这种方式在复杂页面中可能出现解析问题,所以更推荐方案1。

重要注意事项

  • 确保你的AdSense账号已经通过审核,且网站已被AdSense收录,否则广告不会正常显示。
  • 不要重复加载adsbygoogle.js脚本,方案1的组件已经做了判断,只会加载一次,避免不必要的性能消耗。
  • 严格遵守AdSense的政策,不要在违规位置放置广告(比如内容之外的无关区域)。
  • 测试时如果广告不显示,可以使用AdSense提供的测试广告单元调试,避免触发账号风险。

内容的提问来源于stack exchange,提问作者OluwatobiSS

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.27 17:52:52