Verschachtelte Funktionen mit Htmlcode
ziege2k
- javascript
0 Cheatah0 Ziege2k
0 Vinzenz Mai0 molily
Hallo ich hoffe ihr könnt euch unter der Überschrift was vorstellen....
also mein Problem ist das ich in einer Funktion Htmlcode übergeben möchte
also z.B. onmouseout='openNewWindow("<div>...</div>")'
das funktioniert auch soweit was ich allerdings nicht hinbekomme ist in dieser Funktion noch eine Funktion mit einem String Parameter aufzurufen
z.B. onmouseout='openNewWindow("<div onclick=CloseWindow('Hallo')>...</div>")'
das Problem sind,denke ich, die Hochkomma bzw. Anführungsstriche.
hat jemand eine Idee dazu?
Danke.
Hi,
also z.B.
onmouseout='openNewWindow("<div>...</div>")'
wenn Du einen Wert in einen Kontext bringst, musst Du ihn kontextspezifisch kodieren. Bringst Du also den JavaScript-Code openNewWindow("<div>...</div>")
in den Kontext eines HTML-Attributs, so führe eine HTML-Attribut-spezifische Kodierung durch.
das Problem sind,denke ich, die Hochkomma bzw. Anführungsstriche.
hat jemand eine Idee dazu?
Mal abgesehen davon, dass es höchst selten sinnvoll ist, HTML-Code in JavaScript (noch dazu in Funktionsaufrufen) unterzubringen: Doublequotes lauten HTML-kodiert ", Singlequotes '.
Cheatah
Hi Cheatah,
wenn Du einen Wert in einen Kontext bringst, musst Du ihn kontextspezifisch kodieren. Bringst Du also den JavaScript-Code
openNewWindow("<div>...</div>")
in den Kontext eines HTML-Attributs, so führe eine HTML-Attribut-spezifische Kodierung durch.
was genau meinst du damit?
Mal abgesehen davon, dass es höchst selten sinnvoll ist, HTML-Code in JavaScript (noch dazu in Funktionsaufrufen) unterzubringen: Doublequotes lauten HTML-kodiert ", Singlequotes '.
an die Möglichkeit hatte ich noch garnicht gedacht. Danke
Ziege2k
Hi,
wenn Du einen Wert in einen Kontext bringst, musst Du ihn kontextspezifisch kodieren. Bringst Du also den JavaScript-Code
openNewWindow("<div>...</div>")
in den Kontext eines HTML-Attributs, so führe eine HTML-Attribut-spezifische Kodierung durch.
was genau meinst du damit?
dass die im Kontext geltenden Sonderzeichen (bei HTML also beispielsweise "<", ">" und "&") kontextspezifisch kodiert werden.
Cheatah
@@Cheatah:
nuqneH
dass die im Kontext geltenden Sonderzeichen (bei HTML also beispielsweise "<", ">" und "&") kontextspezifisch kodiert werden.
Wobei dies bei ">" nicht zwingend notwendig ist. [HTML401 §5.3.2, XML10 §2.4]
Qapla'
Hallo,
z.B.
onmouseout='openNewWindow("<div onclick=CloseWindow('Hallo')>...</div>")'
das Problem sind,denke ich, die Hochkomma bzw. Anführungsstriche.
hat jemand eine Idee dazu?
dedlfix ist dabei, seine Ideen in elektronisch lesbare Form zu bringen.
Freundliche Grüße
Vinzenz
onmouseout='openNewWindow("<div onclick=CloseWindow('Hallo')>...</div>")'
das Problem sind,denke ich, die Hochkomma bzw. Anführungsstriche.
Das Problem ist die mehrfache Verschachtelung:
HTML-Attributwert
JavaScript-String
HTML-Attributwert
JavaScript-String
Das lässt sich mit SEHR viel Gefummel lösen, aber es macht deinen Code nicht besser, sondern nur unübersichtlich und unwartbar.
Besser ist es, solche Kontextverschachtelung zu vermeiden.
Vermeide es, JavaScript-Code in HTML unterzubringen. Weise Event-Handler per JavaScript zu. Vergebe im Dokument nur IDs und Klassen und suche die die Elemente anhand dessen heraus, um ihnen JavaScript-Interaktivität zu verpassen.
Vermeide es, HTML-Code im JavaScript-Code unterzubringen. Schreibe HTML-Code direkt ins Dokument. Wenn du ihn nur per JavaScript einblenden willst, dann verstecke ihn standardmäßig per CSS. Ein ausführliches Beispiel habe ich unter https://forum.selfhtml.org/?t=188652&m=1256090 skizziert.
Mathias