Karsten Naumburg: Javascript/DOM - xhtml webseite identifizieren

Hallo,

ich hoffe eine kann mir hier weiterhelfen. Was ist die sicherste (beste) Methode um zu ermitteln, ob eine Webseite als html oder xhtml im DOM eingeladen wird. Gibt es hierfuer eine bestimmte Eigentschaft die man auslesen kann? html elemente werden ja grundsatzlich im uppercase wiedergeben, waehrend xhtml case sensitive das ganze bhandelt. Sollte man nun auf das html element mit xhtml namespace uri pruefen?

Gruss, Karsten

  1. Hi,

    Was ist die sicherste (beste) Methode um zu ermitteln, ob eine Webseite als html oder xhtml im DOM eingeladen wird.

    Du meinst, ob sie durch den HTML Tag Soup Parser geschickt wird, oder durch den XML Parser?
    Ersteres machen die Browser ja auch für XHTML, wenn es als text/html ausgeliefert wird; letzteres machen sie nur dann, wenn der Content-Type auf einen der XML-Typen lautet (text/xml, application/xml, ...)

    Gibt es hierfuer eine bestimmte Eigentschaft die man auslesen kann?

    Geckos kennen z.b. document.contentType, wo der entsprechende Wert drin steht.
    Andere Browser kennen ggf. ähnliches; im IE dürfte es im Allgemeinen eh zwecklos sein, weil der keine XHTML-Dokumente als XML verarbeitet.
    Das Dokument per AJAX noch mal anzufordern (HEAD-Request), und sich dann den Content-Type-Header anzuschauen, wäre eine Notlösung für Browser, die nichts derartiges bieten.

    Warum bist du daran denn überhaupt interessiert, was willst du mit der Info anfangen?

    MfG ChrisB

    --
    Light travels faster than sound - that's why most people appear bright until you hear them speak.
  2. Hi,

    ich hoffe eine kann mir hier weiterhelfen. Was ist die sicherste (beste) Methode um zu ermitteln, ob eine Webseite als html oder xhtml im DOM eingeladen wird.

    im DOM befinden sich Objekte, die in beiden Fällen identisch sind. Sie sind das Ergebnis eines Parsing-Vorgangs, der noch zwischen HTML und XHTML unterscheidet; nach Beendigung des Vorgangs ist der Quellcode nicht mehr von Belang.

    Gibt es hierfuer eine bestimmte Eigentschaft die man auslesen kann?

    Nö. Warum sollte das interessant sein?

    html elemente werden ja grundsatzlich im uppercase wiedergeben, waehrend xhtml case sensitive das ganze bhandelt.

    Wenn's nur so wäre. Die String-Repräsentation der o.g. Objekte kann ohne Weiteres vom jeweils anderen Typus sein.

    Sollte man nun auf das html element mit xhtml namespace uri pruefen?

    Wie lautet eigentlich Dein Problem? Dein wirkliches Problem, meine ich, nicht Dein Versuch, es zu lösen.

    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
  3. @@Karsten Naumburg:

    nuqneH

    Was ist die sicherste (beste) Methode um zu ermitteln, ob eine Webseite als html oder xhtml im DOM eingeladen wird.

    Wie Cheatah schon fragte: Wozu soll das gut sein?

    Sollte man nun auf das html element mit xhtml namespace uri pruefen?

    Bringt nichts. @xmlns ist auch vorhanden, wenn XHTML als 'text/html' verarbeitet wird.

    Du müsstest etwas finden, was bei der Verarbeitung als XML anders ist als beim Tagsoup-Parser. Und es liegt eigentlich auf der Hand: JavaScript-Bereiche sind bei 'application/xml+xhtml' PCDATA, bei 'text/html' CDATA. Das bedeutet, im ersten Fall werden Zeichenreferenzen aufgelöst, im zweiten nicht. Das lässt sich ausnutzen:

    <script type="text/javascript">[code lang=javascript]alert("&auml;".length == 1 ? "XML" : "Tagsoup");</script>[/code]

    Wider Erwarten funktioniert es so nicht:

    <script type="text/javascript">[code lang=javascript]alert("&auml;" == "ä" ? "XML" : "Tagsoup");</script>[/code]

    gibt auch bei XML-Verarbeitung "Tagsoup" aus. Jemand eine Idee, warum?

    Qapla'

    --
    Alle Menschen sind klug. Die einen vorher, die anderen nachher. (John Steinbeck)
    1. Hi,

      <script type="text/javascript">[code lang=javascript]alert("&auml;".length == 1 ? "XML" : "Tagsoup");</script>[/code]

      Wider Erwarten funktioniert es so nicht:

      <script type="text/javascript">[code lang=javascript]alert("&auml;" == "ä" ? "XML" : "Tagsoup");</script>[/code]

      gibt auch bei XML-Verarbeitung "Tagsoup" aus. Jemand eine Idee, warum?

      Falsche Zeichenkodierung gewählt?

      Genau das hatte ich gerade auch, als ich es per Copy&Paste getestet habe - FireBug zeigte den Inhalt des Script-Bereiches dann als
      alert("ä" === "�" ? "XML" : "Tagsoup");
      an, und der Vergleich scheitert natürlich.

      Aber "&auml;" == "ä" "funzt", wenn das ä auch ein "wirkliches" ä ist.

      MfG ChrisB

      --
      Light travels faster than sound - that's why most people appear bright until you hear them speak.
      1. @@ChrisB:

        nuqneH

        Falsche Zeichenkodierung gewählt?

        Grmpf, wie peinlich. Und das passiert mir‽

        Für alle Dateiendungen, die ich üblicherweise verwende, hab ich meinem Editor UTF-8 eingeschärft; .xhtml gehörte nicht dazu.

        Qapla'

        --
        Alle Menschen sind klug. Die einen vorher, die anderen nachher. (John Steinbeck)