Ugh, consegui fazer funcionar. O problema foi que eu estava usando uma classe personalizada na tag iframe e o Discourse remove todas essas tags. Eu deveria ter aprendido minha lição há alguns dias (Formatting posts to look more like Wordpress blog - #6 by jimkleiber). Li que é por um motivo de segurança que classes HTML personalizadas não funcionam aqui, mas não tenho certeza do porquê ![]()
No entanto, aqui está o código para ajustar a altura de um iframe com o seletor .topic-body iframe (não tenho certeza se este código funciona para outros, parece funcionar para mim):
<script type="text/discourse-plugin" version="0.8.18">
api.decorateCookedElement(
element => {
setTimeout(function() {
let iframes = element.querySelectorAll('.topic-body iframe');
if (iframes) {
iframes.forEach(function(iframe) {
iframe.onload = function() {
let iframeDocument = this.contentDocument || this.contentWindow.document;
let contentHeight = Math.max(
iframeDocument.body.scrollHeight,
iframeDocument.documentElement.scrollHeight
) + 'px';
this.style.height = contentHeight;
};
});
}
}, 5000); // Ajuste o atraso conforme necessário
},
{ id: "component-id", onlyStream: true}
);
</script>
EDIT: na verdade, não funciona. Adicionei height="4000px" na tag iframe e é por isso que estava funcionando, eu acho.