Wie überschreibe ich eine Methode in post-cooked.js.es6 in einem Plugin?

Hi,

I’d like to customize the reply/embedded-post. This requires a modification to the _computeCooked method in post-cooked via a plugin; essentially when this.attrs.embeddedPost is true, render something else.

I noticed it’s easier to override or reopen ‘conventional’ Ember classes or the widgets created using ‘createWidget’. What would be the best way to achieve this for the PostCooked class?

2 „Gefällt mir“

Hast du eine Lösung dafür gefunden? Ich wäre sehr dankbar, wenn du sie teilen könntest.

Reicht api.decorateCooked nicht aus?

1 „Gefällt mir“

Ich bin mir nicht sicher. Ich habe mich noch nicht damit befasst. Ich möchte

_computedCooked nach Kategorie ersetzen.
Ich möchte

cookedDiv.innerHTML = this.attrs.cooked;

durch benutzerdefinierten Inhalt ersetzen, der von der Kategorie abhängt. Das ergibt aber Sinn. Das sollte auch mit decorateCooked möglich sein. Nach etwas Recherche scheint decorateCookedElement die richtige Option zu sein, da ich kein jQuery verwenden möchte. Vielen Dank :smiley:

1 „Gefällt mir“

Nach einem Tag Herumprobieren bin ich auf diese Antwort gestoßen.

Es scheint, als wäre das eine verschwendete Mühe gewesen, und ich muss einen anderen Weg gehen.
Wenn ich elem.innerHTML auf &lt;script&gt;alert(1)&lt;/script&gt; setze, wird es unescaped: <script>alert(1)</script> (ich sehe im Composer, dass es in der Vorschau entfernt wird, wenn ich es unescaped eingebe). Ist das ein Problem, oder wird CSP es stoppen?
https://meta.discourse.org/t/mitigate-xss-attacks-with-content-security-policy/104243!csp error|690x191

Beiträge, die Skript-Tags als Teil einer Erklärung enthalten, scheinen ebenfalls diese CSP-Fehler auszulösen. Ich bin jetzt wirklich verwirrt. Muss ich mir überhaupt Sorgen um gespeicherte XSS-Angriffe machen, oder blockiert CSP sie einfach? Im Composer verwende ich CKEditor, was Self-XSS verhindert. Wenn ich mir Sorgen machen muss, scheint es, als müsste ich unsichere Tags entfernen. Im Moment mache ich das so:

  value = Loofah.fragment(value).scrub!(:escape).to_s

, aber es scheint überhaupt keine Wirkung zu haben, weil das Setzen von elem.innerHTML auf diesen Wert die HTML-Entitäten einfach wieder unescaped.

EDIT: Ich habe endlich die Quelle meiner Verwirrung gefunden: Die Inspektion des Elements zeigt dir nicht das echte HTML. Es wandelt HTML-Entitäten bereits um.


Wenn du im Inspector auf „Als HTML bearbeiten