JavaScript ファイルが DOM のレンダリング完了前に実行される場合があります。これにより、DOM 要素にアクセスしようとしたときに、要素が存在しないというエラーが発生する問題が生じます。現時点では、実行を 0.5 秒遅延させるために setTimeout メソッドを使用していますが、これは良い解決策でも良い方法でもありません。
そこで、DOM が完全に生成された場合にのみ JavaScript ファイルを実行するように変更するにはどうすればよいか、という質問です。
JavaScript ファイルが DOM のレンダリング完了前に実行される場合があります。これにより、DOM 要素にアクセスしようとしたときに、要素が存在しないというエラーが発生する問題が生じます。現時点では、実行を 0.5 秒遅延させるために setTimeout メソッドを使用していますが、これは良い解決策でも良い方法でもありません。
そこで、DOM が完全に生成された場合にのみ JavaScript ファイルを実行するように変更するにはどうすればよいか、という質問です。
不適切なフック、例えば $( document ).ready のようなものを使って拡張機能を構築した場合、それは予想されることです。
Discourse は EmberJS アプリケーションなので、拡張機能はそれを考慮に入れ、アプリの既存のフックに接続する必要があります。それについては、Developing Discourse Themes & Theme Components で学習できます。
@Falco ご返信ありがとうございます。確認して、うまくいったかどうかお知らせします。