So habe ich einige Javascript, die ein neues Fenster ohne Ziel-URL öffnet. Ich möchte dann den HTML-Inhalt dieses Fensters als den Inhalt einer Variablen festlegen, eine lange Zeichenfolge mit gültigem HTML.Einstellung von HTML von window.open() seltsame Styling-Probleme in Internet Explorer
var myHtmlHead = "<link href='/foo/my.css'...";
var myHtmlBody = "<div id='foo'>...'";
var myWindow= window.open("", "MyWindow","height=500,width=500");
myWindow.document.head.innerHTML = myHtmlHead;
myWindow.document.body.innerHTML = myHtmlBody;
Ich habe den Inhalt für die Lesbarkeit ausgeschnitten. Das Problem ist, dass dies zwar in Chrome und Firefox perfekt funktioniert, IE aber eine Reihe seltsamer Styling-Probleme verursacht; das CSS lädt, aber alle DIVs sind zentriert und überlappen sich und sobald ich das Fenster um ein Pixel verkleinere, korrigiert es sich. Ich denke, das liegt an der Tatsache, dass ich das CSS geladen habe, nachdem das Fenster geladen wurde und es nicht richtig anwendet, bis das Fenster neu gezeichnet werden muss.
Gibt es eine Möglichkeit, dieses Problem zu umgehen oder das Neuzeichnen programmatisch aus dem JS der übergeordneten Seite auszulösen?
Edit: IE-Version ist 11.0.9600, obwohl es scheint mit Chrome 49 zum Beispiel gut zu funktionieren.
Sie sollten die Version (en) des Browsers in Bezug auf eine solche Frage klar abgrenzen. –
Warum enthält Ihr Code, den Sie dem innerHTML des head- und body-Elements zuweisen, die Tags für head und body _ again_? – CBroe
@CBroe Ja, das war ein Fehler beim Schreiben des Beispiels, für Klarheit. Der Kopf und der Körper enthalten keine zweite Gruppe von Tags. – KrisFoster