JavaScriptでCSSを操作する。ワケあってjQueryは使わない方向で。CSSファイルは自前のものと、外部スクリプトが読み込むものがある。そこがひっかけポイントだった(誰もひっかけるつもりはないと思うけど)。
参考にしたのはこれ。とてもわかりやすくまとまっていた。
JavaScriptによるスタイルシート(CSS)の操作
しかし、いろいろやってるうちにつまづく。
まず、sheet.cssRules.length を拾おうとするとエラー。FireBugで見ると、styleSheet.cssRules自体がnullになっている。そういうこともあるのだな。もちろん、外部スクリプトが読み込んだやつが対象であった(自分で作ったやつなら中味は把握できてる、でも、今後の用途を考えるとなるべく汎用的にしたかったので)。ということで、sheet.cssRules.lengthを見る前に、sheet.cssRulesの存在確認をすることで対処。nullだったら1にしておく、でいいのかな?
次。既存のスタイルシートに、スタイルルールの追加ができないというもの。sheet.insertRule みたいにするのだけど、Firefoxだけでうまくいかない。Chromeはもちろん、IEでもOKなのに!
と思って調べると、Firefoxでは外部ドメインのスタイルシートには追加できない、みたいなことが書いてあった。
javascript – Firefox not able to enumerate document.styleSheets[].cssRules[] – Stack Overflow
ということで、既存のスタイルシートにスタイルルールを追加するのではなく、まず、スタイルシートを追加するという方向にしてみようかと思う。
その他参考にしたのはこのへん。
Javascript cssRules – とみぞーノート
document.createStyleSheet で動的に CSS を生成 – IT戦記
すらすら操作できるようになるにはまだまだ道のりが遠そうだ。
コメント