Rolf B: HTML Inhalte aus 2 textboxen per input button in 3 textbox anhängen (append)

Beitrag lesen

Hallo supernewb,

ich glaube, beatovich hat dich falsch verstanden. Ich denke, du willst den Text für einen Link in eine textarea bringen, kein Kind-Element. Das würde ohnehin nicht gehen

<textarea>
  Hello <a href="selfhtml.org">World</a>
</textarea>

zeigt keinen Link, sondern

  Hello <a href="selfhtml.org">World</a>

Wenn Du deinen bisherigen Weg weiter gehen willst, brauchst Du Escaping. Dazu stellt man vor den String-Begrenzer, der als Klartext stehen soll, einen Backslash. Das wird hier kompliziert, weil Du in einem HTML-Attribut Code notieren willst, der HTML mit Attributen erzeugt. Brrr, da escapest Du Dir den Wolf. Der Weg klingt sehr hölzern.

Viel besser ist es, wenn Du deine append-Funktion so erweiterst, dass Du die IDs der Eingabe-Elemente für Link-Titel und -Ziel als Parameter übergibst und den Rest in der Funktion machst. Dann musst Du nicht escapen und es geht viel geradliniger.

Wenn Du den so erzeugten Text dann beim Empfänger "falsch" ausgibst, d.h. ohne Maskierung von HTML, wird beim Empfänger ein Link draus.

Warum bin ich jetzt rot geworden? Ich habe zu spät angefangen, über das nachzudenken WAS du da eigentlich tust. Es ist ein no-go. Weil es nämlich eine Tretmine ist. Wenn Du den Nachrichtentext vor der Ausgabe nicht korrekt maskierst, könnte ein Spaßvogel auch ein Script-Tag in die Nachricht setzen - und beim Empfänger Schabernack anrichten.

#TEXTAUSGABEN SIND IMMER PASSEND ZU MASKIEREN. KEIN HTML AUS USEREINGABEN.

Zumindest kein HTML, das vom Browser als solches interpretiert werden soll.

Es ist besser, wenn Du sowas wie hier im Forum machst (Kramdown), muss ja nicht in der ganzen Pracht sein, für Links reicht eine vereinfachte Version. Die Idee wäre, dass Du im Textfeld nicht das HTML für einen Link unterbringst, sondern eine spezielle Zeichensequenz, die für die Anzeige in einen Link umgewandelt wird. D.h. beim Anzeigen machst Du erst die HTML Maskierung, und dann die Link-Aufbereitung. Klein Rolf würde vermutlich eckige oder geschweifte Klammern verwenden, so dass im Text z.B. steht: {{Hallo Welt}{http://wiki.selfhtml.org}}. Daraus machst Du am Server für die HTML Ausgabe <a href="https://wiki.selfhtml.org">Hallo Welt</a>. Erst dann. Keine Sekunde früher. Das dürfte mit Regex ganz gut gehen.

Rolf

--
sumpsi - posui - clusi