Comme nous le savons tous, ceux qui font du développement frontal veulent donner des coups de pied à IE, les développeurs. La réputation des développeurs IE n'est pas moins que celle des développeurs GFW. Ils ruinent le marché contre leur conscience, et tout le monde peut les punir. Cependant, dans ces endroits en Chine, il n'y a aucun moyen de s'incliner à la réalité.
Récemment, notre produit doit charger dynamiquement un morceau de CSS dans le navigateur, et le code précédent a été utilisé directement:
La copie de code est la suivante:
var bubblecss = document.CreateElement ('style');
bubblecss.type = 'text / css';
bubblecss.innerhtml = blc_conf.bubblestyle;
document.getElementsByTagName ('Head') [0] .APPEndChild (bubblecss);
Cependant, cela n'est soutenu que par IE9, et il y aura des problèmes sous IE8. Je n'ai jamais remarqué cela. Je ne l'ai pas trouvé avant d'avoir récemment refactorisé et j'ai fait un test complet.
J'ai trouvé une astuce en ligne. Je l'ai essayé et ça marche, mais il y a quelques problèmes
La copie de code est la suivante:
window.bc_bubble_css = blc_conf.bubblestyle;
Document.CreateyLesHeet ("JavaScript: BC_BUBBLE_CSS");
Ici, vous pouvez créer un style défini par la variable BC_BUBBLE_CSS. Cependant, comme HTML5 devient progressivement populaire, certains sélecteurs CSS3 sont également mélangés dans notre CSS. L'utilisation de cette méthode amènera l'analyseur IE8 à lancer une exception lorsque l'analyseur est analysé au sélecteur CSS3 et arrête d'analyser le CSS suivant. Cela rend le CSS chargé à mi-chemin. Les méthodes trouvées en ligne consistent à utiliser le type de feuille de style Adrule pour augmenter, mais cela vous oblige à spécifier le sélecteur et le style CSS2.
Par conséquent, il est nécessaire de démonter une seule règle de CSS, puis d'appeler Addrule à son tour. Exemple:
La copie de code est la suivante:
var s = document.CreateyLesHeet ();
var règles = blc_conf.bubblestyle.replace (/// * [^ / *] * / * // g, "") .replace (/ @ [^ {] * / {/ g, '') .match (/ [^ / {/}] + / {[^ /}] + /} / g);
pour (var i = 0; i <règne.length; i ++) {
var m = règles [i] .match (/(.*)/ S * / {/ s * (. *) /} /);
if (m) {
essayer {
S.Addrule (m [1], m [2]);
} catch (e) {
}
}
}
Il y a deux remplacements au début, en supprimant le regard et une partie du sélecteur CSS3, mais il y a encore des sélecteurs qui manquent le réseau, et vous devez l'attraper plus tard en essayant Catch.
Aussi, je méprise ceux qui conçoivent à nouveau les interfaces IE