Meine Website bietet die Schaltfläche für den Dunkelmodus. Wenn also auf die Schaltfläche geklickt wird, muss ich das Farbschema von Discourse-Einbettungen ändern, um es mit meiner Website konsistent zu halten.
Aber als ich versuchte, der body-Klasse des eingebetteten iframes eine Klasse hinzuzufügen, stellte ich fest, dass iframe.contentDocument immer null ist, und wenn ich document.getElementById("discourse-embed-frame").contentWindow.document verwende, erhalte ich den folgenden Fehler:
Ich denke, es muss eine Möglichkeit geben, den eingebetteten Frame so zu konfigurieren, dass Cross-Origin-Anfragen zugelassen werden, aber ich habe nach einigen Versuchen noch keine Konfiguration gefunden.
Der andere Weg wäre die Verwendung von postMessage, wie z. B. document.getElementById("discourse-embed-frame").contentWindow.postMessage("darkMode"), aber dafür müsste ein Handler vorhanden sein, der die darkMode-Nachricht im Skript verarbeitet. Ich habe noch nicht herausgefunden, wo ich ihn hinzufügen kann.
Ich habe eine ähnliche Herausforderung. Konnten Sie eine Lösung finden?
Aufgrund des Cross-Origin-Problems kann ich keine Art von Marker auf dem Iframe hinzufügen, den mein eingebettetes CSS verwenden kann, um herauszufinden, welche Farben verwendet werden sollen: