# HTML iframe



## 0xdeadbeef (13. Jun 2006)

Ich wollte gerade mal auf möglichst primitive Art einen normalen ASCII-Text innerhalb einer HTML-Seite in einer Textbox mit Scrollbalken anzeigen. Nach kurzer Recherche schien mir <iframe> die richtige Wahl zu sein:

<iframe src="history.txt" name="History" height="300" width="800">


  If your browser would support embedded frames, you could see
  the version history here. You can also access it directly by following this link:
History</p>
</iframe> 

Im IE klappt das auch soweit, die Hintergrundfarbe ist weiß, der Text schwarz, was zwar im Kontrast zum Rest der Seite steht, aber immerhin lesbar ist.
Im Firefox ist der Text ebenfalls schwarz, der Hintergrund ist aber der der Hauptseite (grün-schwarze Bitmap). Damit ist der Text unlesbar. 

Ich habe dann auf diverse Arten versucht, die Farbeinstellungen im "Style" des iframe-Tags zu verändern:

<iframe style="background-image: url(background.gif); color: rgb(255, 255, 204); background-color: rgb(0, 0, 0);"
...
</iframe> 

Leider alles ohne die geringste Auswirkung.

Natürlich könnte ich den Text als ".htm" abspeichern und dort die Farbe einstellen, dann kann ich aber kein einfaches Textfile mehr verwenden, weil z.B. die Zeilenumbrüche fehlen.

Irgendwelche Ideen, wie ich das browserübergreifend hinbekommen kann, ohne Javascript o.ä. zu bemühen?


----------



## byte (13. Jun 2006)

Bei mir funktioniert das problemlos im Firefox:


```
<iframe src="history.txt" name="History" height="300" width="800" style="background-color: rgb(200,200,200);">


If your browser would support embedded frames, you could see
the version history here. You can also access it directly by following this link:
[url="history.txt"]History[/url]</p>
</iframe>
```


----------



## 0xdeadbeef (13. Jun 2006)

Hm, die Backgroundfarbe alleine geht. Das ist ja immerhin schon etwas. Aber warum klappt das mit der Textfarbe nicht?
Und nebenbei ignoriert der IE selbst die Hintergrundfarbe (bleibt weiß).


----------



## Caffè Latte (14. Jun 2006)

Hi,

der IE6 und seine Vorgänger halten sich an keine Standards, weil der Hersteller meinte, er setze die Standards.  Mit dem 7er wird es etwas besser. Was Marktverluste alles bewirken können ...


----------



## byte (14. Jun 2006)

Als Alternative würde mir noch einfallen - falls der Server PHP-fähig ist - die txt-Datei per PHP-Include einzufügen. Dann könntest Du auf den IFrame verzichten und einfach einen Div-Layer oder dergleichen nehmen. Da klappt das dann auch mit den Styles.

AFAIK gibts ja (aus mir unerklärlichen Gründen) kein Include-Befehl in HTML, oder?


----------



## bummerland (14. Jun 2006)

Warum nimmst du keine textarea?


----------



## byte (14. Jun 2006)

Wie macht man denn eine txt-Datei in eine Textarea?


----------



## bummerland (14. Jun 2006)

achso, wenn der text nur als textdatei vorliegt, geht das natürlich mit reinem html nicht.


----------



## 0xdeadbeef (14. Jun 2006)

PHP ist keine Option - wenn ich serverseitig was machen könnte/wollte, würde ich eh Java nehmen.
Eine Option wäre noch Javascript, aber prinzipiell tut's ja und ich scheue den Aufwand, mich da einzuarbeiten.

Davon abgesehen, scheint ein iframe mit Textinhalt eine echte Herausforderung für sämtliche HTML-Editoren zu sein. Da hagelt es Abstürze, falsches Rendering und alle möglichen Fehlverhalten. Ist das wirklich so ein obskurer Anwendungsfall???


----------



## Caffè Latte (14. Jun 2006)

Hi,



			
				0xdeadbeef hat gesagt.:
			
		

> ...
> Davon abgesehen, scheint ein iframe mit Textinhalt eine echte Herausforderung für sämtliche HTML-Editoren zu sein. Da hagelt es Abstürze, falsches Rendering und alle möglichen Fehlverhalten. Ist das wirklich so ein obskurer Anwendungsfall???



Ich möchte wetten, das *vi* nicht abstürzt.


----------



## 0xdeadbeef (14. Jun 2006)

Ok, ich hätte "WYSIWYG-Editoren und/oder Editoren mit Preview" schreiben sollen.


----------



## Illuvatar (14. Jun 2006)

Eine Möglichkeit, Text aus einer .txt-Datei zu laden, geht so:

Das in den head:

```
<script type="text/javascript">
var http_request = false;
var elem = null;
function load(id, filename)
{
	elem = document.getElementById(id);
	http_request = false;
	if (window.XMLHttpRequest) { // Mozilla, Safari,...
		http_request = new XMLHttpRequest();
		if (http_request.overrideMimeType) {
			http_request.overrideMimeType('text/plain');
		}
	} else if (window.ActiveXObject) { // IE
		try {
			http_request = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				http_request = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {}
		}
	}

	if (!http_request) {
		alert('Kann keine XMLHTTP-Instanz für die Verwendung von Ajax erzeugen. Bitte verwenden Sie eine neuere Version Ihres Browsers.');
		return false;
	}

	http_request.onreadystatechange = serverAnswer;
	http_request.open("GET", filename, true); //letzten Parameter auf false für synchrones laden
	http_request.send(null);
}
function serverAnswer()
{
	if (http_request.readyState == 4){
		if (http_request.status == 200) {
			elem.value = http_request.responseText;
		} else {
			alert('Bei dem Request ist ein Problem aufgetreten. Fehlernummer ' + http_request.status);
		}
	}
}
</script>
```

Die Textarea sieht dann zum Beispiel so aus:

```
<textarea id="jt1" cols="50" rows="25">Lade...</textarea>
```

Und so wird das dann zuammengefügt:

```
<body onLoad="load('jt1', 'test.txt')">
```


----------



## byte (15. Jun 2006)

0xdeadbeef hat gesagt.:
			
		

> Irgendwelche Ideen, wie ich das browserübergreifend hinbekommen kann, *ohne Javascript* o.ä. zu bemühen?



:bae:


----------



## Illuvatar (15. Jun 2006)

0xdeadbeef hat gesagt.:
			
		

> Eine Option wäre noch Javascript, aber prinzipiell tut's ja und ich scheue den Aufwand, mich da einzuarbeiten.



 :bae:


----------



## 0xdeadbeef (15. Jun 2006)

Hm, danke, werde ich mal ausprobieren, obwohl es natürlich irgendwie mit Atombomben auf Spatzen geworfen ist und die iframe-Lösung ja prinzipiell tut.

Nebenbei: die eleganteste Lösung wären natürlich "Server Side Includes":


```
<textarea name="History" cols="100" rows="40" readonly="readonly">
<pre>

</pre>
</textarea>
```

Leider scheint mein Provider seinen Webserver aber so konfiguriert zu haben, daß SSI ignoriert werden (selbst dann, wenn ich die Datei SHTM o.ä. nenne). Habe mal eine Anfrage gestellt, aber leider noch keine Antwort erhalten.


----------

