<script> in javascript-code-Dokument.schreiben()

Ich bekam einen Teil von javascript-code eingebettet in HTML (erzeugt auf der server-Seite), die wie folgt aussieht:

function winWriteMail2(){
  var win = open('','wininfo', 'width=400,height=300,scrollbars=yes,resizable=yes');
  win.document.open();
  win.document.write('<HTML><HEAD><META http-equiv="Content-type" content="text/html; charset=iso-8859-2"><LINK  type="text/css" href="/css/main.css">');
  win.document.write('<scr' + 'ipt language="javascript" type="text/javascript" src="/js/JSFILE.js"></scr' + 'ipt>');
  win.document.write('</HEAD><BODY BGCOLOR="#f7f3e7">');
  <!-- window content goes here -->
  win.document.write('</BODY></HTML>');
  win.document.close();
}

Dieser code wird ausgeführt beim klicken eines Elementes.

Den problematischen Teil für mich ist die Einbindung der javascript-Datei - funktioniert es in Firefox und Chrome, aber im IE (7 und 8, als ich getestet) verhält sich merkwürdig. Mit der Zeile mit JSFILE es, die Fenster auf klicken, wird Sie geöffnet, aber leer ist, CPU ist 100% ausgelastet und der einzige Weg ist, zu töten IE.

Jemand helfen kann, mit dem Umgang mit diesem problem? Vielleicht sollte ich eine andere Möglichkeit zum einfügen der javascript-Dateien drin?

Ich versucht, statt win.document.write() die DOM-manipulation-Methode, die Umsetzung dieses Teils des Codes nach win.document.close():

h = win.document.getElementsByName('head')[0];
js = document.createElement('script');
js.src = '/js/JSFILE.js';
h.appendChild(js);

aber dann ist der code nicht geladen, auch in Firefox (und untersuchen mit firebug nicht zeigen, es kann sogar zu sehen).


Nach einigen Prüfungen habe ich festgestellt, dass das problem dadurch verursacht wird <script> Elemente mit ein src= - Attribut definiert. Wenn ich ein inline-Skript, wie:

<script type='text/javascript'>alert('foo')</script>

innerhalb meiner document.write(), das Fenster öffnet, wird die alert-box zeigt sich und alles ist in Ordnung.

Aber mit einem

<script type='text/javascript' src='/js/foo.js'></script>

IE Stände beim öffnen des neuen Fenster, hält sich mit 100% CPU.

  • Randnotiz: Ein performance-boost. Verwenden Sie eine write-Anweisung anstelle von mehreren. Bauen Sie die gesamte HTML-string als erste schreiben an das Fenster.
  • Vielen Dank für die info. Sie fixieren es sicher.
InformationsquelleAutor kender | 2009-12-31
Schreibe einen Kommentar