There seems to be a bug in IE when cascading dynamic stylesheets. Does anyone know if there is a workaround? Consider this:
<head>
<style>#test{background:red;}</style>
</head>
<body>
<div id="test">test</div>
<script>
var link = document.createElement('link');
var style = document.getElementsByTagName('style')[0];
link.rel = 'stylesheet';
link.href = 'test.css';
style.parentNode.insertBefore(link, style);
</script>
</body>
The injected 'test.css' contains #test{background:green}
.
Even though we place the <link>
before the <style>
tag, IE7+ will override the styles with the injected stylesheet and apply green as background.
FF/Chrome do this the right way and lets the style tag take precedence over the injected link tag so the background stays red.
style
tags in thebody
are invalid (even though tolerated by all browsers). Still, I agree with you that what FF & co. do is the expected behaviour. – Centimetertype
property - hardly the root of the problem but should be fixed to exclude obscure bugs. Also, I would post a validhead
based example for the same reason. Could it be that the dynamic element isn't created in IE at all? Do other styles embedded this way work? Which versions of IE does this apply to? – Centimeter