Ugh, lo conseguí. El problema era que estaba usando una clase personalizada en la etiqueta iframe y Discourse elimina todas esas etiquetas. Debería haber aprendido mi lección de hace unos días (Formatting posts to look more like Wordpress blog - #6 by jimkleiber). He leído que es por razones de seguridad por las que las clases HTML personalizadas no funcionan aquí, pero no estoy seguro de por qué ![]()
Sin embargo, aquí está el código para ajustar la altura de un iframe con el selector .topic-body iframe (no estoy seguro de si este código funciona para otros, parece que funciona para mí):
<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); // Ajusta el retraso según sea necesario
},
{ id: "component-id", onlyStream: true}
);
</script>
EDIT: en realidad, no funciona. Añadí height="4000px" en la etiqueta iframe y por eso funcionaba, creo.