HTML iframe

Status
Nicht offen für weitere Antworten.

0xdeadbeef

Top Contributor
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

Top Contributor
Bei mir funktioniert das problemlos im Firefox:

Code:
<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

Top Contributor
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

Bekanntes Mitglied
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

Top Contributor
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?
 

0xdeadbeef

Top Contributor
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

Bekanntes Mitglied
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. :D
 

Illuvatar

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

Das in den head:
Code:
<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:
Code:
<textarea id="jt1" cols="50" rows="25">Lade...</textarea>

Und so wird das dann zuammengefügt:
Code:
<body onLoad="load('jt1', 'test.txt')">
 

0xdeadbeef

Top Contributor
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":

Code:
<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.
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen


Oben