Мой сайт предоставляет кнопку тёмной темы, поэтому при её нажатии мне нужно изменить цветовую тему встраиваемых элементов Discourse, чтобы она соответствовала моему сайту.
Однако при попытке добавить класс к элементу body внутри встроенного iframe я обнаружил, что iframe.contentDocument всегда равен null. Если же использовать document.getElementById("discourse-embed-frame").contentWindow.document, возникает следующая ошибка:
Должен существовать способ настроить встроенный фрейм так, чтобы разрешить кросс-доменное взаимодействие, но, несмотря на несколько попыток, я так и не нашёл, как это сделать.
Другой вариант — использовать postMessage, например: document.getElementById("discourse-embed-frame").contentWindow.postMessage("darkMode"). Однако для этого нужен обработчик сообщений с типом darkMode в скрипте, и я пока не нашёл, куда его добавить.
У меня возникла похожая проблема. Вам удалось найти обходной путь?
Из-за проблемы с перекрёстным доступом (cross-origin) я не могу добавить какой-либо маркер во фрейм (iframe), который мой встроенный CSS мог бы использовать для определения необходимых цветов: