appendChild / Frames / IE SP2
Sascha
- javascript
0 Siechfred0 Thomas Meinike0 peter0 Sascha
Hallo,
ich habe jetzt bereits einige Stunden probiert, gesucht und gelesen.
Jetzt muss ich doch fragen:
Ich habe ein Frameset, bestehend u.a. aus ausgabe und eingabe
In ausgabe steht ...<body id="ausgabebox">...
In eingabe steht folgendes script:
...
var target = parent.ausgabe.document.getElementById("ausgabebox");
var addline = document.createTextNode("Hallo");
target.appendChild(addline);
...
Im Mozilla geht alles prima, im IE kommt ein Scriptfehler
"Ungültiges Argument". Wenn ich zu Testzwecken eine einzige HTML-Seite bastle, also das appendChild ins gleiche Fenster erfolgt, gibt es keine Probleme.
Meine IE-Version: 6.0.2900.2180.xpsp_sp2_rtm.040803-2158. Den habe ich samt der neuen Sicherheitsrichtlinien stark in Verdacht. Nur, wenn Funktionalität wieder lokal abhängt ... aargh.
Sinn der ganzen Geschichte ist ein PHP-Chat. Der Null-Pixel hohe Transmitter-Frame submitted sich selbst im Intervall und "holt" die neuen Chat-Zeilen. Danach sollen diese in das Ausgabefenster eingehangen werden. Vorteil: Ich ziehe nicht immer das Ausgabefenster, welches durch die reloads flackert und unruhig wirkt.
Ich möchte andere Technologien wie Flash oder Java-Applets vermeiden.
Vielen Dank für Eure/Ihre Hilfe.
Grüße
Sascha
Hallo Sascha.
Im Mozilla geht alles prima, im IE kommt ein Scriptfehler
"Ungültiges Argument". Wenn ich zu Testzwecken eine einzige HTML-Seite bastle, also das appendChild ins gleiche Fenster erfolgt, gibt es keine Probleme.
Siehe http://msdn.microsoft.com/workshop/author/dhtml/overview/xpsp2compat.asp (unter "Object Caching").
Freundschaft!
Siechfred
Hallo,
Im Mozilla geht alles prima, im IE kommt ein Scriptfehler
"Ungültiges Argument". Wenn ich zu Testzwecken eine einzige HTML-Seite bastle, also das appendChild ins gleiche Fenster erfolgt, gibt es keine Probleme.Meine IE-Version: 6.0.2900.2180.xpsp_sp2_rtm.040803-2158. Den habe ich samt der neuen Sicherheitsrichtlinien stark in Verdacht. Nur, wenn Funktionalität wieder lokal abhängt ... aargh.
Das ist ein bereits vor dem SP2 bekanntes IE-Problem. Probiere es mal so:
var target = parent.ausgabe.document.getElementById("ausgabebox");
var addline = document.createElement("span");
addline.appendChild(document.createTextNode("Hallo"));
if(target.outerHTML)target.insertAdjacentHTML("beforeEnd",addline.outerHTML);
else target.appendChild(addline);
Wenn addline wirklich eine neue Zeile meint und nicht nur Inline-Content, dann statt span-Element ein p-Element erzeugen.
MfG, Thomas
Hi,
probiers mal so:
...
var target = parent.ausgabe.document.getElementById("ausgabebox");
var addline = parent.ausgabe.document.createTextNode("Hallo");
target.appendChild(addline);
...
gruß
peter
Vielen Dank für Eure tolle Unterstützung.
Ich habe mir jetzt eine Bullette ans Knie genagelt und mich von hinten erschossen.
Nachdem ich mal die Threads zum Thema Chat und PHP gelesen hatte, war ich echt verzweifelt. Dass das so nicht zusammenpasst.
Nun ja, ich habe es trotzdem gelöst:
In einem Frame lasse ich mir jetzt ein Array schreiben von PHP:
line[1]="<b>Nick:</b>Text";
line[2]="<b>Nick:</b>Text";
line[3]="<b>Nick:</b>Text";
line[4]="<b>Nick:</b>Text";
...
Maximal 30 Zeilen und keine älter als 5 Minuten.
Der Anzeigeframe weiss stets, welche line er zuletzt ausgegeben hatte und liest dann bis zum Ende des Arrays.
Eingebunden werden die Lines dann mit appendChild im eigenen Fenster so ist nix frame-übergreifend ausser den JS-Variablen.
Ach ja, und damit der Anzeigeframe immer schön nach unten scrollt
wollte ich Anker mit einer fortlaufenden Namensgebung "t1" bis "t(n)" einhängen und per self.location.hash = "t"+lastline scrollen. Klappt aber nicht. Ich mach das jetzt erstmal auf eine dummdämliche Art: self.scrollBy(0,1024);
Danke für Eure Hilfe!!!
Grüße
Sascha
Ach ja: Wer mal ein schönes php/html - Farbfeld: