|

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

(solved) Javascriptのエラー: Security error" code: "1000

環境は Firefox 3.0.9。

javascript で スタイルシートをいじっていると

Security error"  code: "1000

とか

uncaught exception: Security error (NS_ERROR_DOM_SECURITY_ERR)

というエラーが出る。


たとえば head 要素内で

<link  href="foo.css" type="text/css" rel="stylesheet">
<link  href="bar.css" type="text/css" rel="stylesheet">
<style> body { color: red; } </style>

と書かれている場合、 document.styleSheets[0] ~ document.styleSheets[2] でこれらの3つのスタイルシートを取り出せるが、このとき 1つめの foo.css というファイルが 存在していなかったため

document.styleSheets[0].insertRule( ... );

などの操作ができず上記のエラーが出たらしい (これは書籍やweb検索などで調べて分かったのではなく、いろいろ試していて分かった)。


ルール追加の対象が既存のスタイルシート(document.styleSheets[0])である必要はなかったので、 新しいスタイルシートを生成し、そっちにルールを追加することにした。

function addCSS(rules){
  var headElement = document.getElementsByTagName("head")[0];
  var styleElement = document.createElement("style");
  styleElement.type = "text/css";
  headElement.appendChild(styleElement);
    
  var sheet = styleElement.sheet;
  for(var selector in rules){
    sheet.insertRule(selector + "{" + rules[selector] + "}", sheet.cssRules.length);
  }
}

addCSS(
  {
    "body": "padding: 0 5%;"
  , "p": "line-height: 200%;"
  }
);

以上。

スポンサーサイト



** ホームに戻る

|
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。