InnerHTML veschluckt <script...>
Olaf
- javascript
Hallo zusammen,
ich möchte in einer Datei test.html über
document.body.innerHTML = myhtmlstring;
dem body einen neuen Inhalt zuweisen. Das klappt bis auf den unschönen Nebeneffekt, daß eventuelle Scriptelement unterschlagen werden.
Wenn ich also beispielsweise den Inhalt aus diesem DIV nehmen würde
<div ID=test>
<script DEFER language="javascript">
function test(){
var x=25;
}
</script>
Das ist der neue Body
</div>
und zuweise
document.body.innerHTML=frame2.document.body.getElementById("test").innerHTML;
dann fehlt im neuen Inhalt des Body die script-Passage.
Wo ist mein Fehler? Was kann ich tun?
Danke
Olaf
Hallo,
ich möchte in einer Datei test.html über
document.body.innerHTML = myhtmlstring;
dem body einen neuen Inhalt zuweisen. Das klappt bis auf den unschönen Nebeneffekt, daß eventuelle Scriptelement unterschlagen werden.
Das wird im Internet Explorer und möglicherweise auch im Opera seinen Dienst tun, Nutzer von Moz/FF werden in die Röhre schauen dürfen.
Wenn ich also beispielsweise den Inhalt aus diesem DIV nehmen würde
<div ID=test>
^^^^
Wo sind die Anführungszeihen?
<script DEFER language="javascript">
^^^^^
Was bitte ist das?
function test(){
var x=25;
}
</script>
Das ist der neue Body
</div>und zuweise
document.body.innerHTML=frame2.document.body.getElementById("test").innerHTML;
dann fehlt im neuen Inhalt des Body die script-Passage.
Offengestanden gehe ich davon aus, daß dort soviele Fehler im Quelltext enthalten sind, daß es vermutlich etliche Fehler sein werden, die das gewünschte Ergebnis verhindern.
Gruß aus Berlin!
eddi
Hallo Eddi,
vielleicht hätte ich erwähnen sollen, dass das Ganze nur im Internet Explorer funktionieren muss.
Offengestanden gehe ich davon aus, daß dort soviele Fehler im >Quelltext enthalten sind, daß es vermutlich etliche Fehler sein >werden, die das gewünschte Ergebnis verhindern.
Da liegst Du, mit Verlaub, falsch, denn das Script verursacht keinen Fehler und tut seinen Dienst, setzt also den neuen innerHTML im Body, lässt aber eben nur das <script... weg.
Die Beschreibung für DEFER findest Du hier
http://msdn.microsoft.com/workshop/author/dhtml/reference/properties/defer.asp
Viele Grüße
Olaf
Hi,
Die Beschreibung für DEFER findest Du hier
http://msdn.microsoft.com/workshop/author/dhtml/reference/properties/defer.asp
Nö, die wirkliche Beschreibung des defer-Attributs befindet sich hier: http://www.w3.org/TR/html4/interact/scripts.html#adef-defer
cu,
Andreas
Hi,
Die Beschreibung für DEFER findest Du hier
http://msdn.microsoft.com/workshop/author/dhtml/reference/properties/defer.asp
Nö, die wirkliche Beschreibung des defer-Attributs befindet sich hier: http://www.w3.org/TR/html4/interact/scripts.html#adef-defer
<philosophie>Was ist "wirklich"? Eine Standard-Definition, die niemand beachtet, oder die Definition des Erfinders, die dieser logischerweise auch beachtet?</philosophie> ;-)
Gruß, Cybaer
ich möchte in einer Datei test.html über
document.body.innerHTML = myhtmlstring;
dem body einen neuen Inhalt zuweisen. Das klappt bis auf den unschönen Nebeneffekt, daß eventuelle Scriptelement unterschlagen werden.Das wird im Internet Explorer und möglicherweise auch im Opera seinen Dienst tun, Nutzer von Moz/FF werden in die Röhre schauen dürfen.
Warum?
Mathias
Hallo erstmal!
Warum?
die Unterstützung von document.body
ist noch nicht so lange implementiert.
Gruß aus Berlin!
eddi
Hallo,
Das wird im Internet Explorer und möglicherweise auch im Opera seinen Dienst tun, Nutzer von Moz/FF werden in die Röhre schauen dürfen.
Warum?
die Unterstützung von
document.body
ist noch nicht so lange implementiert.
Äh, Mozilla kann document.body meines Wissens schon seit des frühesten Alpha-Versionen, mindestens aber seit Versin 1.0. Firefox kann es entsprechend ebenfalls seit Anbeginn des Firefox-Projektes. document.body ist DOM 1 HTML. Ich würde daher behauptet, dass es keinen Mozilla bzw. Firefox gibt, der document.body nicht kennt.
Mathias
Hi,
<div ID=test>
^^^^
Wo sind die Anführungszeihen?
Sind bei HTML hier optional.
<script DEFER language="javascript">
^^^^^
Was bitte ist das?
MS-HTML ("Script ohne Bildschirmausgabe"), das den IE anweist, daß er nicht (wie sonst üblich) zuerst das Script abarbeiten soll, sondern daß während des Abarbeitens parallel auch bereits die Seite weiter gerendert werden kann.
Gruß, Cybaer
Hi,
<script DEFER language="javascript">
^^^^^
Was bitte ist das?
MS-HTML ("Script ohne Bildschirmausgabe"),
Nö, ganz normales HTML.
Siehe http://www.w3.org/TR/html4/interact/scripts.html#edef-SCRIPT
cu,
Andreas
Hi,
Nö, ganz normales HTML.
Oh, Du siehst mich verblüfft. :-)) Dann muß es wohl heißen: Streiche "MS-HTML", setze "ehemals MS-proprietäres HTML"!?
Wird das Attribut denn von irgendeinem Browser jenseits des IEs auch beachtet? Oder ist das ansonsten eher der Gattung der in der Rec definierten META-Angabe des Script-Typs zuzuordnen (à la "schön, daß wir es mal definiert haben")? ;->
Gruß, Cybaer
Hallo,
MS-HTML ("Script ohne Bildschirmausgabe"), das den IE anweist, daß er nicht (wie sonst üblich) zuerst das Script abarbeiten soll, sondern daß während des Abarbeitens parallel auch bereits die Seite weiter gerendert werden kann.
Naja, ist das wirklich so?
»The presence of this attribute will instruct IE to defer the loading of a script until after the DOM has loaded.« http://dean.edwards.name/weblog/2005/09/busted/
Das ist doch das genaue Gegenteil von »Abarbeiten, während die Seite weiter gerendert wird«? Die Seite wird erst fertig gerendert, dann wird das Script aufgerufen. Kein paralleles Ausführen des Scripts und Parsen des HTML-Codes.
Mathias
Hi,
Naja, ist das wirklich so?
Gegenfrage: Ist es etwa blauäugig anzunehmen, daß Microsoft solche Vorgänge sinnvollerweise parallelisiert?
Hmm - OK, ich ziehe die Bemerkung zurück! >;->
Die Seite wird erst fertig gerendert, dann wird das Script aufgerufen. Kein paralleles Ausführen des Scripts und Parsen des HTML-Codes.
Einigen wir uns auf ein schlichtes: Der Browser wartet beim Rendern der Seite nicht mehr auf das Abarbeiten des Scripts. :-)
Gruß, Cybaer