Temos uma função JS que é executada no DOMContentLoaded, document.addEventListener(“DOMContentLoaded”, NOSSAFUNÇÃO).
Funciona bem quando você atualiza o navegador, mas nunca aparece quando você navega pelo site. Presumo que seja porque o Discourse carrega o DOM apenas uma vez e o restante é tratado com navegação do lado do cliente, como uma SPA. Então, estou me perguntando, como podemos executar a função em uma mudança de navegação no próprio Discourse? Costumava haver maneiras fáceis de fazer isso através da API de plugins, mas essas APIs foram depreciadas e não as vejo mais usadas em nenhum componente. Existe uma maneira fácil de fazer isso ainda? Ou precisamos criar um componente inteiro apenas para executar algum JavaScript em uma mudança de navegação? Obrigado.
O onPageChange é chamado no próximo runloop, então acho que ele ainda será chamado após o DOMContentLoaded na maioria das situações, mas não posso garantir.
Vejo usos que dependem do onPageChange e fazem coisas com elementos DOM diretamente. De onde é disparado o evento routeDidChange aliás (EDIT: é do ember: RouterService | 6.7.0 | Ember API Documentation)?
Concordo com o modificador didInsert, muito legal!
Obrigado. Li extensivamente a documentação e, de acordo com meus comentários e um acompanhamento de um membro do Discourse, a API de plugin é legada e será descontinuada em breve. Portanto, embora seu código possa funcionar agora, ele quebrará em breve, acredito que em futuras atualizações. É por isso que estou procurando uma solução melhor. Parece excessivo criar um componente Glimmer para isso, então eu esperava que houvesse outro evento que talvez pudéssemos usar.
Aliás, testamos com api.OnPageChange e funciona bem. Ainda não encontramos uma instância em que o conteúdo do DOM não estivesse disponível ao chamar OnPageChange, então parece que ele é disparado após DomContentLoaded. Mas não posso ter 100% de certeza. Obrigado pela sua ajuda nisso.
A documentação é o caminho a seguir, como apontado por Robert; você também pode ver uma tonelada de exemplos no repositório: Code search results · GitHub
Ah, ok, então este é um recurso do Ember e não relacionado ao Discourse? A única parte no código que está realmente relacionada ao “Discourse” seria o pluginoutlet?