ziege2k: Verschachtelte Funktionen mit Htmlcode

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.

  1. 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 &quot;, Singlequotes &#39;.

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:| br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. 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 &quot;, Singlequotes &#39;.

      an die Möglichkeit hatte ich noch garnicht gedacht. Danke

      Ziege2k

      1. 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

        --
        X-Self-Code: sh:( fo:} ch:~ rl:| br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
        X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
        1. @@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'

          --
          Alle Menschen sind klug. Die einen vorher, die anderen nachher. (John Steinbeck)
  2. 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

  3. 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