Come passare dalla modalità scura alla modalità bianco brillante in Discourse incorporato

Il mio sito web fornisce il pulsante della modalità scura, quindi quando il pulsante viene cliccato, devo cambiare il tema dei colori di Discourse Embeds per mantenerlo coerente con il mio sito web.

Ma quando provo ad aggiungere una classe al body dell’iframe incorporato, scopro che iframe.contentDocument è sempre nullo e se uso document.getElementById("discourse-embed-frame").contentWindow.document, l’errore è il seguente:

Penso che dovrebbe esserci un modo per configurare il frame incorporato per consentire l’origine incrociata, ma non ho ancora trovato come configurarlo dopo aver provato alcune configurazioni.

L’altro modo potrebbe essere usare postMessage, come document.getElementById("discourse-embed-frame").contentWindow.postMessage("darkMode"), ma ci deve essere un gestore per gestire il messaggio darkMode nello script, non ho ancora trovato dove aggiungerlo.

Sto riscontrando una sfida simile. Sei riuscito a trovare una soluzione?

A causa del problema cross-origin, non posso aggiungere alcun tipo di marcatore all’iframe che il mio CSS incorporato possa utilizzare per capire quali colori utilizzare:

Non ancora risolto. Non ho ricevuto nemmeno una risposta ufficiale, quindi non so se tutti gli amici ufficiali siano in vacanza.

1 Mi Piace

(Rimbalzo amichevole per vedere se abbiamo una guida ufficiale :slight_smile: )

1 Mi Piace

Esiste un modo ufficiale ma solo per i temi ufficiali: Styling of Embedded Discourse

Questo potrebbe aiutare:

Ho implementato la funzionalità più recente ufficiale.
Se hai ancora requisiti, puoi fare riferimento a