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"]);
},
};
})();
是否可以为每个页面运行一些自定义脚本?
例如,我想在每一页上 运行 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"]);
},
};
})();