Можете рассказать немного подробнее, чего вы пытаетесь добиться? Существует несколько различных API, которые позволяют изменять содержимое поста при его отображении. Наиболее распространенным из них является api.decorateCookedElement.
На самом деле я только что осознал, что мне нужно запускать функцию для контента постов, добавляемого в DOM.
По сути, я воссоздаю API addPosterIcon, так как мое решение должно содержать кастомный HTML. Я уже всё реализовал, и всё работает, кроме одного случая: при прокрутке длинной страницы.
Я пытаюсь добавить иконку рядом с именем пользователя-автора, которая вызывает пользовательское событие. Единственная проблема в том, что иконка пока не добавляется при изменениях в DOM.
Проблема этого метода в том, что он вызывает множество обработанных объектов одновременно и поэтому предпочитает использование идентификатора (чтобы избежать утечек памяти), что мне не нужно. Мне подошло бы, если бы одно событие срабатывало только после того, как все элементы будут обработаны. У меня есть идея, как это можно реализовать, но есть ли правильный способ сделать это с помощью API Discourse?
API decorateCookedElement будет вызываться один раз для каждого отрендеренного поста. В колбэк будет передан DOM-элемент, содержащий содержимое поста. Суть в том, что вы должны изменять только переданный вам элемент, а не что-либо ещё на странице.
Однако, поскольку вы хотите вносить изменения в метаданные вокруг содержимого поста, decorateCookedElement, вероятно, не подходит.
В таком случае, скорее всего, лучше всего изучить, как реализован API addPosterIcon:
Решение для меня, чтобы decorateCookedElement выполнялся только один раз для конкретного типа и когда готово последнее обработанное содержимое, было таким простым: