これに対処する方法はいくつか考えられますが、まずは適切なカスタマイズフックを使用した「正しい」方法で試してみましょう。
テーマのフッターセクションに HTML を追加すると、Discourse はページ遷移時や無限スクロールでより多くの要素が追加された際に、要素が飛び跳ねないように処理を行います。
これは custom-html コンポーネントとしてここに追加されます。
コンポーネントのコードを見ると、レンダリング時にアプリイベントを発火させることがわかります。
これが使用すべきフックです。
どのように使用すればよいでしょうか?
plugin-api には、特定のアプリイベントが発火したときにコードを実行できるメソッドがあります。
イベント名は既知なので、以下のように使用できます。
api.onAppEvent("inserted-custom-html:footer", () => {
// ここで作業を行います
});
これは plugin-API のメソッドであるため、スクリプトタグの type を text/discourse-plugin に変更する必要があります。
<script type="text/discourse-plugin" version="0.8">
api.onAppEvent("inserted-custom-html:footer", () => {
// ここで作業を行います
});
</script>
上記のスニペットは、フッターがレンダリングされるたびに発火します。したがって、以下のような処理が可能になります。
<script type="text/discourse-plugin" version="0.8">
api.onAppEvent("inserted-custom-html:footer", () => {
$(".footer-div #footerNavDiv").click(function () {
console.log("クリックイベントをキャッチしました");
// クリックイベントに対する処理をここで実施
});
});
</script>
plugin-API については、こちら で詳しく読むことができます。