docusaurus 2:运行 每个页面的自定义脚本

docusaurus 2: run custom script for every page

是否可以为每个页面运行一些自定义脚本?

例如,我想在每一页上 运行 alert(1);。我怎样才能在没有任何组件发出嘶嘶声的情况下做到这一点?

我知道这可以通过创建 jsx 组件并在每个 .mdx 文件中使用它来完成(但每个文档都应该是一个 .mdx 文件)。所以这不是我要找的东西。

这里是 Docusaurus 2 用户!

Docusaurus 是 Server-Side 呈现然后水合以用作单页应用程序。不知道你想达到什么目的,我只能尝试给你一个大概的建议。

实现此目的的一种方法是创建您自己的插件,它使您可以访问执行上下文,例如路由器事件。

我目前将其用于用户更改页面时的分析报告。它尚未记录在案,但在 docusaurus-plugin-google-analytics 包的 Docusaurus 2 存储库中有一个很好的示例。

这是我使用的片段,它仅在加载新页面时执行,非常适合我的用例。可能还有另一个生命周期钩子在页面水化时调用,我还没有找到。

analytics-module.js

import ExecutionEnvironment from "@docusaurus/ExecutionEnvironment";

export default (function () {
  if (!ExecutionEnvironment.canUseDOM) {
    return null;
  }

  return {
    onRouteUpdate({ location }) {
      _paq.push(["setCustomUrl", location.pathname]);
      _paq.push(["setDocumentTitle", document.title]);
      _paq.push(["trackPageView"]);
    },
  };
})();