`before-script-load` にコンテンツを挿入する方法は?

before-script-load リージョンに JavaScript を注入したいと考えています。

これはテーマまたはテーマコンポーネント経由で実現可能でしょうか?

「いいね!」 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-initializers、および head_tag.html テンプレートを利用しようとしました。
そして head_tag.html テンプレート内で、コードを <script></script> タグと <script type="text/discourse-plugin" version="0.1"></script> タグで囲んでみました。

それぞれで、スクリプト間のブートストラップ順序を確認できます。しかし、それ以外では、読み込まれるスクリプトの順序を制御できているようには見えません。

「いいね!」 3