Sven M.: string type bestimmen mit javascript

Hallo,

Ich bin auf der Suche nach einer eleganten Loesung zur Bestimmung des String Types. Ein String soll als Textknoten eingefuegt werden. Bei dem String kann es sich um (X)HTML, escaped (X)HTML, XML String, einfacher Text etc. handeln. Ziel soll es sein, entsprechenden String umzuwandeln und in das Dokument einzufuegen.

Waere dankbar fuer Tipps,

Gruss, Sven

  1. Hi,

    Ziel soll es sein, entsprechenden String umzuwandeln und in das Dokument einzufuegen.

    Umwandeln in _was_?

    Warum nicht einfach über innerHTML += string hinzufügen?

    ~dave

    1. Hallo Dave,

      Umwandeln in _was_?

      So umwandeln, das der String ohne Fehler in ein XHTML konformes Dokument eingefuegt werden kann. Sofern es sich um escaped xml string handelt, soll einsprechender XML knoten eingefuegt werden.

      Warum nicht einfach über innerHTML += string hinzufügen?

      Das ist das Problem. Je nach Inhalt des Strings wird ein DOM exception 11 error ausgegeben, z.B. Sonderzeichen etc.

      Je nach Inhalt des Strings muesste dann ele.innerHTML, ele.appendChild(document.createTextNode()), ele.textContent etc. verwendet werden. Folglich muss der Inhalt bekannt sein, damit der String entsprechend im DOM eingefuegt wird.

      Hoffe, das beschreibt mein Problem etwas besser.

      Gruss, Sven

      1. Hi,

        Je nach Inhalt des Strings muesste dann ele.innerHTML, ele.appendChild(document.createTextNode()), ele.textContent etc. verwendet werden. Folglich muss der Inhalt bekannt sein, damit der String entsprechend im DOM eingefuegt wird.

        innerHTML "frisst" so gut wie alles, und kümmert sich um die Erzeugung der entsprechenden Elemente, sofern es sich um als (X)HTML interpretierbares handelt.
        Im Wesentlichen macht der Browser dabei auch nichts anderes, als was er mit dem HTML-Code macht, den er direkt als darzustellendes Dokument vom Webserver erhält - er parst den Text, und erstellt daraus eine DOM-Struktur.
        Und die gleiche Fehlerkorrektur kommt dabei auch größtenteils zum Einsatz.

        Das ist das Problem. Je nach Inhalt des Strings wird ein DOM exception 11 error ausgegeben, z.B. Sonderzeichen etc.

        Jetzt liefere doch bitte endlich mal ein nachvollziehbares Beispiel.

        MfG ChrisB

        --
        RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
      2. Hi,

        ich verstehe leider noch nicht was du machen willst.
        Ein Beispiel wo .innerHTML nicht das macht was du möchtest und was genau du möchtest würde mir helfen.

        Ich weiß nicht wo im Ergebnis der Unterschied zwischen .innerHTML und .appendChild und .textContent ist.

        ~dave

      3. Hallo,

        So umwandeln, das der String ohne Fehler in ein XHTML konformes Dokument eingefuegt werden kann. Sofern es sich um escaped xml string handelt, soll einsprechender XML knoten eingefuegt werden.

        Aus dem String selbst kannst du nicht zuverlässig in Erfahrung bringen, um was es sich handelt.

        Beispiel: "bla <foo>"
        Ist das als Markup gemeint oder als Plaintext?

        Du musst also auf einer Ebene darüber wissen, was du da gerade bekommst. Wenn du Markup bekommst, dann brauchst du zusätzlich zum String diese Information. Andernfalls kannst du höchstens heuristisch arbeiten. Z.B. enthält der Text etwas, das dem Pattern eines Start-Tags entspricht? Dabei können dir http://de.selfhtml.org/javascript/objekte/string.htm#index_of@title=indexOf und <http://de.selfhtml.org/javascript/objekte/string.htm#match@title=reguläre Ausdrücke> helfen.

        Je nach Inhalt des Strings muesste dann ele.innerHTML, ele.appendChild(document.createTextNode()), ele.textContent etc. verwendet werden. Folglich muss der Inhalt bekannt sein, damit der String entsprechend im DOM eingefuegt wird.

        innerHTML und textContent kannst du immer verwenden, ohne dass Exceptions auftreten.
        Sie haben aber eine andere Bedeutung, und ob du "foo <b> bar" an innerHTML oder an textContent zuweist, musst du vorher entscheiden können (siehe oben).

        Mathias

  2. Hi,

    Ich bin auf der Suche nach einer eleganten Loesung zur Bestimmung des String Types.

    JavaScript kennt nur einen String-Typ.

    Ein String soll als Textknoten eingefuegt werden. Bei dem String kann es sich um (X)HTML, escaped (X)HTML, XML String, einfacher Text etc. handeln.

    Nein. Wenn du aus ihm einen Textknoten erzeugst, dann enthält er nur eins: Zeichen.

    Ziel soll es sein, entsprechenden String umzuwandeln und in das Dokument einzufuegen.

    Wie dave schon fragte: In was?

    Waere dankbar fuer Tipps,

    Beschreibe bitte erst mal dein Vorhaben nachvollziehbar.

    MfG ChrisB

    --
    RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
    1. Hi Chris,

      Siehe meine Antwort an Dave.

      Gruss, Sven M.