How to automatically adjust iframe height for embedded wordpress posts

Ugh, j’ai réussi. Le problème était que j’utilisais une classe personnalisée sur la balise iframe et Discourse supprime toutes ces balises. J’aurais dû tirer la leçon d’il y a quelques jours (Formatting posts to look more like Wordpress blog - #6 by jimkleiber). J’ai lu que c’était pour des raisons de sécurité que les classes HTML personnalisées ne fonctionnaient pas ici, mais je ne suis pas sûr pourquoi :confused:

Cependant, voici le code pour ajuster la hauteur d’un iframe avec le sélecteur .topic-body iframe (je ne suis pas sûr si ce code fonctionne pour les autres, il semble fonctionner pour moi) :

<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); // Ajustez le délai au besoin                  
      },
      { id: "component-id", onlyStream: true}
    );
</script>

EDIT : en fait, ça ne fonctionne pas. J’ai ajouté height="4000px" dans la balise iframe et c’est pourquoi cela fonctionnait, je pense.

1 « J'aime »