外部CSSをremoveしたときにそのCSSのstyleが解除されるタイミングがIE6とFireFox & Operaで違う
外部CSSのlinkタグをappendChild()すると、appendの完了(というか読み込みの完了?)と同時にそのstyleが反映される。
しかし、removeに関してはそのstyleが解除されるタイミングがブラウザによって異なるのでメモ。
自分のまとめ
やっぱり後者の挙動が正しいと思うのですよねー。
何が正しいんだか分からなくなったけど、FireFox & Operaの挙動がうれしいなー
(で、ソースは下記参照。)
HTML(hoge.html)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>hoge</title> </head> <body> <p id="foo">foo</p> <p id="bar">bar</p> <button id="load-foo" name="foo">load foo.css</button> <button id="load-bar" name="bar">load bar.css</button> <button id="remove-foo" name="foo" disabled="disabled">remove foo.css</button> <button id="remove-bar" name="bar" disabled="disabled">remove bar.css</button> <script type="text/javascript" src="fuga.js"></script> </body> </html>
-
-
- -
-
JavaScript(fuga.js)
(function() { var load_css = function(value) { var css = document.createElement('link'); css.href = value + '.css'; css.type = 'text/css'; css.rel = 'stylesheet'; css.id = 'link-' + value; document.getElementsByTagName('body')[0].appendChild(css) }; document.getElementById('load-foo').onclick = document.getElementById('load-bar').onclick = function() { load_css(this.name); this.disabled = 'disabled'; document.getElementById('remove-' + this.name).disabled = ''; }; document.getElementById('remove-foo').onclick = document.getElementById('remove-bar').onclick = function() { document.getElementById('link-' + this.name).parentNode.removeChild(document.getElementById('link-' + this.name)); this.disabled = 'disabled'; document.getElementById('load-' + this.name).disabled = ''; }; })();
-
-
- -
-
p#foo { color: #00F; font-weight: bold; }
p#bar { color: #F00; font-weight: bold; }