Lena: IFrame per JS mit XML füllen?

Hallo zusammen,

ich hab eine Seite mit nem IFrame. Der hat ID und Namen "xy" und kein "src"-Attribut, da ich ihn per JS mit XML füllen will. Ziel ist es, in ihm das XML so darzustellen, wie es der Browser eben kann, also die Ansicht wo man die Tags auf und zuklappen kann. ;-) Ich bastel jetzt schon 2 h und bekomms net hin. Ist es überhaupt möglich und wenn ja wie?

So siehts jetzt aus: Fehler ist u.a. "myIFrame.document has no properties"... *heul*

function showMe(xml) {
  var myIFrame = document.getElementById('xy');
  myIFrame.document.write(xml);
  myIFrame.document.close();
}

Gruß,
Lena

  1. Hi,

    versuchs mal so:

    In der JS-Funktion:

    resultHTML = "";
    resultHTML += "<iframe height=500 width=500 src='"+xml+"' scrolling='yes' />";
    document.getELementById("xy").innerHTML = resultHTML;
    bzw.
    document.all.xy.innerHTML = resultHTML; (so mache ich das immer)

    Müsste so funkionieren.

    Grüße,
    Thorsten F.

    1. resultHTML += "<iframe height=500 width=500 src='"+xml+"' scrolling='yes' />";

      Hä, kann das gehen? Vielleicht sollte ich dazusagen dass "xml" bei mir wahlweise xmlHttpRequest.responseText oder xmlHttpRequest.responseXML ist. Sorry!

      Lena

      1. So, jetzt mal konkret: Über die Methode "getResponseText" des XMLHttpRequest-Objekts bekomme ich die textuelle Repräsentation meines XML-Dokuments, das ich nun zu Debugging-Zwecken in einem IFrame darstellen will. Und zwar so, dass ich die einzelnen Knoten auf und zuklappen kann. Hat irgenwer ne Idee wie ich das hinkriege???

        Vielen Dank und liebe Grüße,

        Lena

        1. Hi

          Warum willst Du das Rad neu erfinden? Es gibt doch den DOM-Inspector.

          Gruß
          Nolava

          1. Warum willst Du das Rad neu erfinden? Es gibt doch den DOM-Inspector.

            Schon richtig, aber es wär halt trotzdem sehr anschaulich.

            Hab inzwischen gesehen, dass die Browser für die XML-Darstellung (nennt sich gleub "Pretty Print" etc.) XSL(T) verwenden. Hat mir jemand vielleicht nen Tipp, wie ich damit evtl. weiterkommen könnte? Vielleicht muss ich in meinm XML ja nur irgend ne magische XSL-Zeile einfügen und dann läufts?!? Hmmm...

            Gruß,
            Lena

            1. Hallo,

              Schon richtig, aber es wär halt trotzdem sehr anschaulich.

              Hab inzwischen gesehen, dass die Browser für die XML-Darstellung (nennt sich gleub "Pretty Print" etc.) XSL(T) verwenden. Hat mir jemand vielleicht nen Tipp, wie ich damit evtl. weiterkommen könnte? Vielleicht muss ich in meinm XML ja nur irgend ne magische XSL-Zeile einfügen und dann läufts?!? Hmmm...

              Magische Zeile im XML, nun ja: im IE kannst du die Zeile:
              <?xml-stylesheet type="text/xsl" href="res://msxml3.dll/defaultss.xsl"?>
              in deinem XML einfügen (direkt nach <?xml version="1.0" ... ?>)

              Das  res://msxml3.dll/defaultss.xsl kannst du auch in der Adressenzeile des IE eingeben, damit rufst du dann das XSL auf, dass der IE für diese Art der Baumdarstellung verwenden.

              Im Mozilla heisst diese XSL-Datei XMLPrettyPrint.xsl, erreichen kannst du sie über chrome://global/content/xml/XMLPrettyPrint.xsl (oder view-source:chrome://global/content/xml/XMLPrettyPrint.xsl) in der Adressenzeile, aber du kannst es nicht wie beim IE in der <?xml-stylesheet type="text/xsl" href="..."?> einfügen.

              Aber wenn du die Zeile <?xml-stylesheet type="text/xsl" href="..."?> in diesem XML einfügen könntest, würdest du sie eh nicht mehr brauchen, weil das so oder so die Default-Einstellung für die Browser wäre.

              Da du dein XML mit xmlHTTP holst, würde sich für dich eine XSL-Transformation per JavaScript gut eignen, dann könntest du das Ergebnis auch in einen div schreiben und bräuchtest kein iframe mehr.

              Grüße
              Thomas

              1. Hi Thomas,
                wow, vielen Dank für die vielen Infos. Ich bin jetzt deutlich schlauer, auch wenn mein Problem dadurch nicht gelöst ist.

                Da du dein XML mit xmlHTTP holst, würde sich für dich eine XSL-Transformation per JavaScript gut eignen, dann könntest du das Ergebnis auch in einen div schreiben und bräuchtest kein iframe mehr.

                Au ja, das wär der Hammer! Hast du mir vielleicht sogar nen Tipp dazu?

                Gruß,
                Lena

                1. Hallo,

                  Da du dein XML mit xmlHTTP holst, würde sich für dich eine XSL-Transformation per JavaScript gut eignen, dann könntest du das Ergebnis auch in einen div schreiben und bräuchtest kein iframe mehr.

                  Au ja, das wär der Hammer! Hast du mir vielleicht sogar nen Tipp dazu?

                  Bitte (aus den Codes solltest du dir deine Anwednung zusammenstellen können):
                  http://forum.de.selfhtml.org/archiv/2006/3/t126420/#m815491
                  http://forum.de.selfhtml.org/archiv/2005/1/t97848/#m597247
                  http://forum.de.selfhtml.org/archiv/2004/4/t78019/#m451662

                  Grüße
                  Thomas

  2. Nochwas,

    var myIFrame = document.getElementById('xy');
      myIFrame.document.write(xml);

    Wenn du das mal ausschreibts, dann steht da folgendes:
    document.getElementById('xy').document.write(xml);
    -> folglich: myIFrame.document has no properties

    Ich glaube, nicht, dass es solch eine Anweisung in JS gibt.

    Und was soll: myIFrame.document.close(); bewirken?

    Grüße.

  3. So siehts jetzt aus: Fehler ist u.a. "myIFrame.document has no properties"... *heul*

    Das ist seltsam. Was sagt denn ein alert( myIFrame);

    function showMe(xml) {
      var myIFrame = document.getElementById('xy');
      myIFrame.document.write(xml);
      myIFrame.document.close();

    übrigens gibt es noch einen document.open() Befehl der zwei Parameter kennt. Zumindest text/plain wird teilweise unterstützt.

    Struppi.

    --
    Javascript ist toll (Perl auch!)