誰もが知っているように、フロントエンド開発を行う人は、つまり開発者を数回キックしたいと考えています。 IE開発者の評判は、GFW開発者の評判に劣ります。彼らは良心に対して市場を台無しにし、誰もが彼らを罰することができます。しかし、中国のこれらの場所では、現実に屈する方法はありません。
最近、当社の製品はブラウザにCSSの一部を動的にロードする必要があり、以前のコードが直接使用されました。
コードコピーは次のとおりです。
var bubblecss = document.createelement( 'style');
bubblecss.type = 'text/css';
bubblecss.innerhtml = blc_conf.bubblestyle;
document.getElementsByTagname( 'head')[0] .appendChild(bubblecss);
ただし、これはIE9によってのみサポートされており、IE8の下で問題が発生します。私はこれに気づいたことがありません。最近リファクタリングして完全なテストを行うまで、私はそれを見つけられませんでした。
オンラインでトリックを見つけました。私はそれを試してみました、そしてそれはうまくいきますが、いくつかの問題があります
コードコピーは次のとおりです。
window.bc_bubble_css = blc_conf.bubblestyle;
document.createstyleSheet( "javascript:bc_bubble_css");
ここでは、変数BC_BUBBLE_CSSで定義されたスタイルを作成できます。ただし、HTML5が徐々に人気を博しているため、一部のCSS3セレクターもCSSに混合されます。この方法を使用すると、パーサーがCSS3セレクターに解析され、後続のCSSの解析を停止すると、IE8パーサーが例外をスローします。これにより、CSSは途中でのみロードされます。オンラインで見つかった方法は、StyleSheet Type AddRuleを使用して増加することですが、これにはCSS2セレクターとスタイルを指定する必要があります。
したがって、CSSから単一のルールを分解してから、順番にAddRuleを呼び出す必要があります。例:
コードコピーは次のとおりです。
var s = document.createstyleSheet();
varルール= blc_conf.bubblestyle.replace(///*[^/*]*/*// g、g、 "").replace(/@{]*/{/g、 '').match(/[^/{/}]+/{[^/}]+/}/g);
for(var i = 0; i <rules.length; i ++){
var m = rules [i] .match(/(.*)/ s*/{/s*(。*)/}/);
if(m){
試す {
s.addrule(m [1]、m [2]);
} catch(e){
}
}
}
最初は2つの代替品があり、CSS3セレクターの視線と一部を削除しますが、ネットワークを逃すセレクターがまだあり、後でキャッチしてキャッチする必要があります。
また、私は再びインターフェイスを設計する人を軽spしています