Ich habe ein Bookmarklet, das ein CSS Stylesheet über ein "link" -Tag (externes Stylesheet) in das Ziel-DOM einfügt.Fehler beim programmatischen Hinzufügen von CSS zu IE
In letzter Zeit funktioniert das nicht mehr auf Amazon.com, nur im Internet Explorer. Es funktioniert auf anderen Seiten und mit anderen Browsern (sogar auf Amazon.com). Die Technik, die wir verwenden das Stylesheet einzufügen ist ziemlich einfach:
document.getElementsByTagName('head')[0].appendChild(s);
Wo „s“ ist ein Link-Objekt mit document.createElement
erstellt. Auch bei Amazon sehe ich über den DOM-Inspektor der Internet Explorer Developer Toolbar, dass das Element dort ist. Allerdings Wenn ich die document.styleSheets
Sammlung in JavaScript warnt, ist es nicht da.
Als Test habe ich versucht, die IE-only document.createStyleSheet Methode zu verwenden, die die URL zu meinem Stylesheet als ein Argument übergibt. Dies führt den Fehler:
Not enough storage is available to complete this operation
Points of Interest:
- Die Dokumentation für
document.createStyleSheet
sagt, wird ein Fehler ausgelöst werden, wenn mehr als 31 Sheets auf der Seite sind, aber (1) es ist ein anderer Fehler und (2) es gibt nur 10 externe Stylesheets auf der Seite. - Mein googling für den Fehler ergab eine Reihe von Sackgassen, und die einzige, die nichts Stylesheet-bezogen vorgeschlagen war this drupal post, aber es bezieht sich auf eine Zeichenbeschränkung auf Inline-Stile, im Gegensatz zu einem Problem in Bezug auf externe Stile .
- Der gleiche Code, auch der
createStyleSheet
Aufruf, funktioniert auf anderen Websites in IE.
Jeder Rat würde geschätzt werden. Dies hat für mich den Status "komplett mysteriös" erreicht.
Es funktioniert auf der Homepage, aber es funktioniert hier nicht: http://www.amazon.com/Combi-Pod-Bouncer-in-Wasabi/dp/B0010BPM24/ref=pd_bbs_sr_2?ie=UTF8&s=baby- Produkte & qid = 1237865687 & sr = 8-2 –
aktualisierte meine Antwort, hoffe es funktioniert gut für Sie. –