如何将内容注入 `before-script-load`?

我想将一些 JavaScript 注入到 before-script-load 区域。

是否可以通过主题或主题组件来实现?

3 个赞

它是否需要在那个确切的位置(执行顺序)运行?浏览器将加载所有那些 head 标签脚本,而不管它们的顺序。您可以通过转到 admin-customize-themes 中主题的编辑 CSS/HTML 部分来将脚本添加到 head 标签区域。如果您的主题已托管并且不允许自定义,您可以通过主题组件(或者如果它是您的主题,则添加到存储库的 head 标签文件)来添加它。

2 个赞

这是一个开发页面,并未在生产环境中使用。

至于 Discourse 中的实际页面,主题可以很好地将内容注入 head 元素,但对其发生的具体位置控制不多,但正如 @Lilly 所说,这不应该是一个问题。

如果您能告诉我们您具体想完成什么,我们或许可以提供一些建议。

2 个赞

我认为您想将其放入初始化程序中。

请参阅 Split up theme Javascript into multiple files

但 Falco 对此比我了解得多。

2 个赞

感谢 @Lilly@Falco@pfaffman

我相信这是我的主要问题。

例如,我需要确保我设置的 dataLayer 对象始终在任何其他脚本之前添加到页面,如果可能的话。尤其是在 GTM 加载之前(无论是通过内置的还是自定义的加载器)。

在我的本地开发环境中,我尝试利用 initializespre-initializershead_tag.html 模板;
head_tag.html 模板中,我尝试将我的代码包装在 <script></script><script type="text/discourse-plugin" version="0.1"></script> 标签中。

通过其中任何一个,我都可以看到它们之间的引导顺序。但除此之外,我似乎无法控制加载脚本的顺序。

3 个赞