IFrame per JS mit XML füllen?
Lena
- javascript
0 Thorsten F.0 Thorsten F.0 Struppi
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
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.
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
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
Hi
Warum willst Du das Rad neu erfinden? Es gibt doch den DOM-Inspector.
Gruß
Nolava
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
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
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
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
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.
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.