gormus
(Osman Görmüş)
2023 年5 月 23 日 21:35
1
我想将一些 JavaScript 注入到 before-script-load 区域。
是否可以通过主题或主题组件来实现?
👋 Greetings Discourse Developer. This HTML was generated by the ember-cli proxy. If you're looking for
<head> content generated by Rails, you'll need to start the server with `ALLOW_EMBER_CLI_PROXY_BYPASS=1`
and then visit the Rails port (e.g. `localhost:3000`) directly. Be sure to keep ember-cli running so
that JS assets continue to be re-compiled when changes are made.
-->
<meta charset="utf-8">
<title>Discourse - Ember CLI</title>
<meta name="description" content="">
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, user-scalable=yes, viewport-fit=cover">
<bootstrap-content key="before-script-load">
{{content-for "before-script-load"}}
<bootstrap-content key="discourse-preload-stylesheets">
{{content-for "discourse-preload-stylesheets"}}
<script defer src="{{rootURL}}assets/vendor.js"></script>
<script defer src="{{rootURL}}assets/discourse.js"></script>
<ember-auto-import-scripts defer entrypoint="app"></ember-auto-import-scripts>
3 个赞
Lilly
(Lillian Louis)
2023 年5 月 23 日 23:46
2
它是否需要在那个确切的位置(执行顺序)运行?浏览器将加载所有那些 head 标签脚本,而不管它们的顺序。您可以通过转到 admin-customize-themes 中主题的编辑 CSS/HTML 部分来将脚本添加到 head 标签区域。如果您的主题已托管并且不允许自定义,您可以通过主题组件(或者如果它是您的主题,则添加到存储库的 head 标签文件)来添加它。
2 个赞
Falco
(Falco)
2023 年5 月 24 日 00:33
3
这是一个开发页面,并未在生产环境中使用。
至于 Discourse 中的实际页面,主题可以很好地将内容注入 head 元素,但对其发生的具体位置控制不多,但正如 @Lilly 所说,这不应该是一个问题。
如果您能告诉我们您具体想完成什么,我们或许可以提供一些建议。
2 个赞
pfaffman
(Jay Pfaffman)
2023 年5 月 24 日 00:34
4
2 个赞
gormus
(Osman Görmüş)
2023 年5 月 24 日 16:23
5
感谢 @Lilly 、@Falco 和 @pfaffman 。
我相信这是我的主要问题。
例如,我需要确保我设置的 dataLayer 对象始终在任何其他脚本之前添加到页面,如果可能的话。尤其是在 GTM 加载之前(无论是通过内置的还是自定义的加载器)。
在我的本地开发环境中,我尝试利用 initializes 、pre-initializers 和 head_tag.html 模板;
在 head_tag.html 模板中,我尝试将我的代码包装在 <script></script> 和 <script type="text/discourse-plugin" version="0.1"></script> 标签中。
通过其中任何一个,我都可以看到它们之间的引导顺序。但除此之外,我似乎无法控制加载脚本的顺序。
3 个赞