「リンク」タグ (外部スタイルシート) を介して CSS スタイルシートをターゲット DOM に挿入するブックマークレットがあります。
最近、これは Amazon.com で Internet Explorer のみで機能しなくなりました。他のサイトや他のブラウザー (Amazon.com でも) で動作します。スタイルシートを挿入するために使用している手法は非常に簡単です。
document.getElementsByTagName('head')[0].appendChild(s);
ここで、「s」は で作成されたリンク オブジェクトですdocument.createElement
。Amazon でも、Internet Explorer Developer Toolbar DOM インスペクタを介して要素がそこにあることがわかります。 ただしdocument.styleSheets
、JavaScript でコレクションにアラートを出すと、そこにはありません。
テストとして、URL をスタイルシートに引数として渡すIE 専用のdocument.createStyleSheetメソッドを使用しようとしました。これはエラーをスローします:
この操作を完了するのに十分なストレージがありません
興味がある点:
- のドキュメントに
document.createStyleSheet
は、ページに 31 を超えるスタイルシートがある場合にエラーがスローされると記載されていますが、(1) 別のエラーであり、(2) ページに 10 個の外部スタイルシートしかありません。 - エラーをグーグルで調べたところ、多くの行き止まりが見つかりました。スタイルシート関連を示唆していたのはこの drupal 投稿だけでしたが、外部スタイルに関連する問題ではなく、インライン スタイルの文字数制限について言及しています。
- 同じコードは、
createStyleSheet
呼び出しも含めて、IE の他のサイトでも機能します。
これは私にとって「完全な謎」の状態に達しました。