Wie wir alle wissen, wollen diejenigen, die Front-End-Entwicklung durchführen, IE-Entwickler ein paar Mal auf den Markt kommen. Der Ruf von IE -Entwicklern ist nicht weniger als der von GFW -Entwicklern. Sie ruinieren den Markt gegen ihr Gewissen, und jeder kann sie bestrafen. An diesen Orten in China gibt es jedoch keine Möglichkeit, sich der Realität zu verbeugen.
Kürzlich muss unser Produkt ein Stück CSS im Browser dynamisch laden, und der vorherige Code wurde direkt verwendet:
Die Codekopie lautet wie folgt:
var bubblecss = document.createelement ('style');
bubblecss.type = 'text/css';
bubblecsss.innerhtml = blc_conf.bubbilstyle;
document.getElementsByTagName ('head') [0] .AppendChild (bubblecss);
Dies wird jedoch nur von IE9 unterstützt, und es wird Probleme unter IE8 geben. Ich habe das nie bemerkt. Ich habe es erst gefunden, bis ich kürzlich neu gestaltete und einen vollständigen Test durchgeführt habe.
Ich fand online einen Trick. Ich habe es versucht und es funktioniert, aber es gibt einige Probleme
Die Codekopie lautet wie folgt:
window.bc_bubble_css = blc_conf.bubblestyle;
document.createstyLesHeet ("JavaScript: bc_bubble_css");
Hier können Sie einen von der Variablen bc_bubble_css definierten Stil erstellen. Da HTML5 jedoch allmählich populär wird, werden auch einige CSS3 -Selektoren in unser CSS gemischt. Durch die Verwendung dieser Methode wird der IE8 -Parser eine Ausnahme ausgelöst, wenn Parser an den CSS3 -Selektor analysiert und die nachfolgende CSS nicht mehr analysiert. Dadurch wird das CSS nur auf halbem Weg geladen. Die online gefundenen Methoden sollen den Stylesheet -Typ -Addrule verwenden, um zu erhöhen. Dies erfordert jedoch, dass Sie den CSS2 -Selektor und -Stil angeben.
Daher ist es notwendig, eine einzelne Regel von CSS zu zerlegen und dann ADDRULE nacheinander aufzurufen. Beispiel:
Die Codekopie lautet wie folgt:
var s = document.createstylesheet ();
var regeln = blc_conf.bubblyle.replace (///*[^/*]*/*// g, "") .replace (/@[^{]*/{/g, '') .match (/[^/{/}]+/{[^/}]+/}/g);
für (var i = 0; i <regeln.length; i ++) {
var m = Regeln [i] .Match (/(.*)/ S*/{/s*(.*)/}/);
if (m) {
versuchen {
S.Addrux (M [1], M [2]);
} catch (e) {
}
}
}
Zu Beginn gibt es zwei Ersetzungen, die den Blick und einen Teil des CSS3 -Selektors entfernen, aber es gibt immer noch Selektoren, die das Netzwerk vermissen, und Sie müssen es später fangen, indem Sie es versuchen.
Außerdem verachte ich diejenigen, die IE -Schnittstellen wieder entwerfen