HTML-Code im iFrame ohne Interpretation
Wicki
- html
0 Gunnar Bittersmann0 Wicki
0 dedlfix
Hallo,
ich habe eine HTML-Datei mit 2 iFrame's. In iFrame 1 soll eine 2. HTML-Datei lediglich angezeigt (nicht vom Browser interpretiert) werden. In iFrame 2 wird dann die gleiche HTML-Datei ganz normal vom Browser interpretiert.
Mein Problem liegt bei iFrame 1 und meine bisherige Lösung ist:
Meine Frage:
kennt jemand eine Lösung, in der ich auf die verschiedenen Duplikate verzichten kann ?
Gruß Wicki
@@Wicki:
nuqneH
Meine Frage:
kennt jemand eine Lösung, in der ich auf die verschiedenen Duplikate verzichten kann ?
Meine Frage:
Steht dir PHP zur Verfügung?
Qapla'
@@Wicki:
nuqneH
Meine Frage:
kennt jemand eine Lösung, in der ich auf die verschiedenen Duplikate verzichten kann ?Meine Frage:
Steht dir PHP zur Verfügung?Qapla'
PHP steht zur Verfügung.
Nochmal zur Verdeutlichung:
ich will ausgehend von einer HTML-Datei diese in iFrame 1 lediglich anzeigen und in iFrame 2 vom Browser auch interpretieren lassen.
Hallo,
PHP steht zur Verfügung.
das ist schön.
Dann erzeuge doch eine PHP Datei welche deine HTML Datei per Dateizugriff einliest und dann mit htmlentities() den HTML Code umwandelt und dann ausgibt. diese PHP Datei lässt du dann im ersten iFrame anzeigen.
Viele Grüße,
Tim
@@Wicki:
nuqneH
PHP steht zur Verfügung.
Nochmal zur Verdeutlichung:
ich will ausgehend von einer HTML-Datei diese in iFrame 1 lediglich anzeigen und in iFrame 2 vom Browser auch interpretieren lassen.
Warum Iframes?
<?php [code lang=php]$code = [link:http://de.php.net/manual/de/function.file-get-contents.php@title=file_get_contents](code.phtml);
?>
<figure class="sourcecode"><code><?php echo [link:http://de.php.net/manual/de/function.htmlspecialchars.php@title=htmlspecialchars]($code);
?></code></figure>
<figure class="rendered"><?php echo $code;
?></figure>[/code]
Oder vielleich willst du den Code gar nicht in eine externe Date auslagern, sondern im Dokument notieren:
<?php [code lang=php]$code = [link:http://de.php.net/manual/de/language.types.string.php#language.types.string.syntax.nowdoc@title=<<<'EOT']
[code lang=html]<p>
Das ist ein Beispielsatz mit einem <a href="http://example.net">Beispiellink</a>.
</p>
EOT;[/code] ?>[/code]
Qapla'
iFrame macht optisch was her (Scrolleisten), figure ist wohl HTML5.
Mit PHP habe ich es auch schon vergeblich versucht.
Das Problem ist:
In den beiden iFrame-Tags muss ich letztlich (hier per Javascript) die Source benennen, die bei iFrame 1 lediglich angezeigt und bei iFrame 2 aber auch interpretiert werden soll. Ich sehe da keine Möglichkeit, per PHP in den iFrame-body hinein zu schreiben. Ob überhaupt eine Umwandlung der Tag-Klammern (< >) notwendig ist, ist eine offene Frage. Auch eine "text/plain"-Angabe reicht nicht aus.
Wicki
@@Wicki:
nuqneH
iFrame macht optisch was her (Scrolleisten)
Die Optik ist Sache von CSS. Die Scrolleisten kannst du bei (so gut wie) jedem Element haben.
Bei 'textarea' bekämst du gleich die Möglichkeit geschenkt, die Größe der Box zu verändern.
figure ist wohl HTML5.
Wohl ja.
In den beiden iFrame-Tags
muss ich letztlich (hier per Javascript) die Source benennen
?? Warum per JavaScript?
Ich sehe da keine Möglichkeit, per PHP in den iFrame-body hinein zu schreiben.
Warum Iframes?
Ob überhaupt eine Umwandlung der Tag-Klammern (< >) notwendig ist, ist eine offene Frage.
Die Umwandlung wäre nicht erforderlich, wenn du das Dokument als XML verarbeiten lässt, dann ginge es mit <![CDATA[ … ]]>
. Ich glaube nicht, dass du das willst.
Qapla'
Om nah hoo pez nyeetz, Wicki
Ergänzung:
In den beiden iFrame-Tags
Elementen.
Matthias
Om nah hoo pez nyeetz, Wicki
Ergänzung:
Matthias
das ist ein "akademisches" Problem und ich weiß wohl zu unterscheiden zwischen Tag | Attribut | Anweisung. Wobei letztlich auch ein HTML-Tag eine Art "Anweisung" für den Browser darstellt, sich so und so zu verhalten.
Trotzdem Dank für die Anteilnahme.
Gruß Wicki
Mit PHP habe ich es auch schon vergeblich versucht.
Wie denn?
Schreibe ein kleines PHP- Programm und übergib die URL der anzuzeigenden HTML- Datei als Parameter.
Rufe deine PHP- Datei mit dem Parameter in iframe 1 auf.
PHP liest nun die HTML- Datei, wandelt die spitzen Klammern um und gibt das Ergebnis aus. Müsste doch funzen.
Gruß, Gast
PHP liest nun die HTML- Datei, wandelt die spitzen Klammern um und gibt das Ergebnis aus. Müsste doch funzen.
Tipp: Wenn du die Zeilenumbrüche darstellen möchtest, nimm nicht <pre>, das erzeugt einen horizontalen Scrollbalken bei langen Zeilen.
Verwende echo nl2br( $text );
New Line wird zu <br>, anzuwenden nach Umwandlung der spitzen Klammern.
Gruß, Gast
@@Gast:
nuqneH
Tipp: Wenn du die Zeilenumbrüche darstellen möchtest, nimm nicht <pre>, das erzeugt einen horizontalen Scrollbalken bei langen Zeilen.
Was sich mit CSS beheben ließe.
Mit CSS könnte man auch das 'code'-Element so formatieren, dass man kein 'pre'-Element braucht.
Qapla'
ich habe nun einen PHP-Test gemacht entsprechend dem Vorschlag von "gast". Also mit
$code=file_get_contents(...); $data=htmlspecialchars($code);
$data=nl2br($data); echo $data;
Es funktioniert sogar, <pre>-Anweisungen sind nicht erforderlich. Der einzige Nachteil: Formatierung in Gestalt von Einrückungen geht verloren.
Gruß Wicki
@@Wicki:
nuqneH
Es funktioniert sogar, <pre>-Anweisungen sind nicht erforderlich. Der einzige Nachteil: Formatierung in Gestalt von Einrückungen geht verloren.
Was sich mit CSS beheben ließe: white-space. Und dann brauchst du auch nl2br()
nicht.
Qapla'
PS: HTML-Elemente sind keine „Anweisungen“. Man verwendet HTML-Elemente, um Inhalte http://de.selfhtml.org/html/text/logisch.htm@title=auszuzeichnen. Für Code dementsprechend das 'code'-Element.
wenn ich white-space:pre
bei dem PHP-Programm verwende funktioniert das unter Firefox, nicht mehr beim IE6.
Vielen Dank für die zahlreichen Hinweise !
Gruß Wicki
Hi,
mein Beileid dass du für den IE6 Anpassungen vornehmen musst.
~dave
Tach!
- mit Firefox: ich erzeuge ein Duplikat der 2. HTML-Datei mit dem Dateityp 'txt' und lasse dieses in iFrame 1 anzeigen
Dateitypen spielen im Web keine Rolle. Der Content-Type im HTTP-Header ist ausschlaggebend. text/plain wäre reiner Text. Vermutlich macht dein Webserver das für dich.
- mit IE6: im Duplikat sind die spitzen Klammern (< >) umgewandelt in ihre Entities (< >) und das Ganze wird umklammert von <pre>-Tags
Der IE6 denkt sich: "Wenn da text/plain kommt und im Anfang der Ressource HTML-Code vorkommt, dann hat der Webserver bestimmt einen Fehler gemacht und es hätte text/html sein sollen. Also korrigiere ich das mal stillschweigend." Fehlerkorrekturen kommen ja alle naselang auch in anderen Browsern in diversen Situationen zum Tragen. Dass das eine nicht gewünschte Korrektur ist, kann man dem IE6 nicht sagen. text/html und eine kontextgerechte Behandlung der HTML-eigenen Zeichen bringt das von dir erstrebte Ergebnis in jedem Fall, auch in anderen Browsern.
dedlfix.