Anleitung zum Whitelisten beliebiger HTML-Attribute?

Anscheinend gab es hier im Meta-Bereich einmal ein Thema, das beim Einfügen von Skripten half, aber es wurde entfernt.

Anfangs wusste ich nicht, dass Markdown in HTML-Beiträgen IDs und Klassen entfernt, und kurz darauf erfuhr ich, dass Skripte anders ausgeführt werden müssen.

Ich versuche, dieses CodePen-Beispiel innerhalb der Discourse-Seite zum Laufen zu bringen, bin mir aber nicht sicher, wo ich anfangen soll, da es offensichtlich nicht auf die übliche Weise per Kopieren und Einfügen funktioniert:

Mir ist klar, dass ich Skripte nur von der Admin-Seite aus einfügen kann, was ich auch getan habe, aber ich glaube, es ist noch mehr Arbeit nötig, damit es innerhalb der Themen funktioniert.

Im Wesentlichen werden diese externen Skripte ausgelöst, um Inhalt in ein Div mit bestimmten Datenattributen einzufügen.

Muss ich die gesamten externen Skripte mit jQuery und Ember neu schreiben, um die Divs mit Inhalt zu füllen? Ich hoffe sehr, das Rad nicht neu erfinden zu müssen.

Vielen Dank im Voraus,

Ich verstehe diese Anfrage nicht. Sie möchten, dass durchschnittliche Benutzer willkürlich JavaScript in Ihr Discourse injizieren können, indem sie es einfach in einer Antwort posten? Das wäre ein Albtraum für die Sicherheit.

Danke für die schnelle Antwort, Jeff.

Der durchschnittliche Nutzer fügt keine externen Skripte hinzu, sondern stellt lediglich Divs mit Datenattributen bereit, die freigegeben werden, um die externen JS-Skripte zu aktivieren, die den Inhalt füllen, sobald diese Divs gefunden werden.

Werden Divs mit Attributen (grundlegendes HTML) nicht bereits von den Editoren für den durchschnittlichen Nutzer unterstützt und akzeptiert, damit er Beiträge verfassen kann? Oder kann ich als Administrator grundlegendes HTML verwenden, während andere Nutzer dies nicht können?

Andere große Websites wie Wowhead und Icy Veins setzen diese Skripte bereits für ihre Nutzer ein. Vielleicht sind auch sie gefährdet?

Nochmals vielen Dank für deine Hilfe.

Also, du möchtest kein JS, sondern

<div attribute='blah'>

Ich werde deinen Beitragstitel bearbeiten, damit er besser widerspiegelt, was du tatsächlich fragst. Ich bin mir nicht sicher, ob wir eine willkürliche Whitelistierung einzelner HTML-Attribute zulassen.

Du könntest jedoch <iframe>-Domains in deinen Site-Einstellungen whitelisten, um etwas Ähnliches zu erreichen.

Wenn du in der Meta-Suche nach „Wowhead

Danke, Jeff. Ich habe in der Vergangenheit Iframes bereits whitelisten können, aber das ist nicht das Verhalten, das ich suche.

Hallo Rafael,
ich befürchte, ich kann mich schlecht ausdrücken. Es gibt ein Beispiel in diesem Beitrag:

Am Ende dieses Links steht in meinem Beitrag „Loading“. Das ist ein div mit bestimmten Attributen, das die externen Skripte auslösen soll, die ich im Admin-Bereich im Theme unter dem Abschnitt /body (wo Skripte hingehören) platziert habe. Diese Skripte werden dann über JavaScript mit Inhalt gefüllt (mit statistischen Balken).

Am Ende sollte es so aussehen wie im Codepen, das ich zuvor oben in diesem Thema verlinkt habe, sobald die Daten generiert sind.

Die benutzerdefinierten Datenattribute sind bei Discourse standardmäßig bereits whitelistet und werden nicht aus dem div entfernt, wie es bei id oder class der Fall ist.

Mein Problem ist: Wie kann ich bewirken, dass diese externen Skripte ausgeführt werden und Daten in diesen leeren divs basierend auf den Attributen generieren? Basierend auf diesen Attributen könnten sie je nach Thema oder Beitrag unterschiedlich sein und das Skript auslösen, verschiedene Daten anzuzeigen, die von diesen externen Skripten generiert werden.

Zusammenfassung meines Vorhabens

Externe Skripte, die im Admin-Bereich unter Customize > Theme „Edit CSS/HTML“ im Abschnitt platziert werden:

<script src="https://code.highcharts.com/highcharts.js"></script>
<script src="https://bloodmallet.com/js/bloodmallet_chart_import.min.js"></script>

Eingabe im Editor durch einen Benutzer oder mich:

<div 
  data-bloodmallet="chart"
  data-wow-class="shaman" 
  data-wow-spec="elemental" 
  data-chart-engine="highcharts"
  data-tooltip-engine="wowhead"
  data-type="trinkets"
  data-azerite-tier="all"
  data-fight-style="patchwerk"
  data-entries="7"
  data-background-color="#343a40" 
  data-font-color="#f8f9fa" 
  data-axis-color="#828282"
  data-language="en"
>Loading...</div>

Ausgabe, wenn das div gefunden wird und das externe JavaScript (die Skripte, die ich auf der Admin-Seite platziert habe) ausgeführt und ausgelöst wird, um Inhalt basierend auf diesen Datenattributen zu generieren:

Mache ich mich verständlich? Ich entschuldige mich, wenn ich mich nicht gut ausdrücken kann, da ich zweisprachig bin und es manchmal dazu neige, Dinge komplizierter klingen zu lassen.

Das ist genau das, was @Falco dir verlinkt hat. Lies GitHub - xfalcox/discourse-hearthstone · GitHub, dort findest du alles, was du brauchst.

Hallo Joffrey,

Okay, danke. Ich habe versucht, einen Teil des Codes zu lesen und zu verstehen; wir werden sehen, wie weit ich komme.

Nochmals vielen Dank.

Mir ist gerade aufgefallen, dass ich noch nichts darüber geschrieben habe, aber Generic bbcode wrapper for theme components könnte für deinen Anwendungsfall sehr hilfreich sein.