Como injetar conteúdo em `before-script-load`?

Gostaria de injetar algum javascript na região before-script-load.

É possível conseguir isso através de um tema ou componente de tema?

3 curtidas

precisa ser executado nesse local exato (ordem de execução)? o navegador carregará todos esses scripts da tag head independentemente da ordem deles. você pode adicionar o script na área da tag head indo para a seção editar CSS/HTML de um tema em admin-customize-themes. se o seu tema estiver hospedado e não permitir personalização, você pode adicioná-lo com um componente de tema (ou ao arquivo da tag head do repositório se for o seu tema).

2 curtidas

Essa é uma página de desenvolvimento que não é usada em produção.

Quanto às páginas reais no Discourse, os temas podem injetar conteúdo no elemento head sem problemas, mas sem muito controle sobre o local exato onde isso acontece, mas como o @Lilly disse, isso não deveria ser um problema.

Se você puder nos dar mais detalhes sobre o que exatamente você quer realizar, podemos oferecer algumas sugestões.

2 curtidas

Acho que você quer colocá-lo em um inicializador.

Dê uma olhada em Split up theme Javascript into multiple files

Mas o Falco sabe muito mais sobre isso do que eu.

2 curtidas

Obrigado @Lilly, @Falco e @pfaffman.

Acredito que este seja o meu principal problema.

Como exemplo, preciso garantir que o objeto dataLayer que defino seja sempre adicionado à página antes de qualquer outro script, se possível. Especialmente antes do GTM carregar (seja via embutido ou um carregador personalizado).

Na minha caixa de desenvolvimento local, tentei utilizar os initializes, pre-initializers e o template head_tag.html;
E dentro do template head_tag.html, tentei envolver meu código com as tags <script></script> e <script type="text/discourse-plugin" version="0.1"></script>.

Com cada um deles, consigo ver a ordem de inicialização em relação uns aos outros. Mas, além disso, não parece que tenho controle sobre a ordem dos scripts carregados.

3 curtidas