JS を使用して新しいドキュメントを追加した後<link rel="stylesheet">
、ブラウザーが新しいスタイルシートを要求してそのスタイルを適用することを期待していますが、IE 9 はそれを実行します。ただし、IE 9 はドキュメント内の他のスタイルの優先順位を尊重しません。後続のスタイル ブロックで。
blue.css
次のようなスタイルシートがあるとします。
.box { background-color: blue; }
..そしてこのような文書..
<!DOCTYPE html>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js">
</script>
<!--- The JS below inserts a stylesheet <link> here --->
<style>.box { background-color: red; }</style>
</head>
<body>
<div class="box">hello</div>
<script>
$(function(){
$('<link rel="stylesheet" href="blue.css" type="text/css" />')
.insertBefore($('style'));
});
</script>
</body>
</html>
すべてが完了したら、IE 9 では青いボックスが表示され、FF 12 や Chrome 19 などの他のブラウザーでは赤いボックスが表示されます。
IEはここで怠けているだけですか?怠け者はいい言葉ですか?thisまたはthisのようなハックを使用して、IE にすべてのスタイルを再計算させる必要がありますか?