0

以下のコードを実行するブックマークレットを作成し、CSS スタイルをページに追加しました。Chrome と Firefox で試したすべてのサイトで動作しますが、IE の一部のサイトでは失敗します。失敗するのは常に同じサイトです。

IE でのみ、一部のサイトで 4 行目が「メソッドまたはプロパティ アクセスへの予期しない呼び出し」で失敗します。

var head = document.getElementsByTagName('head')[0];
var style = document.createElement('style');
style.type = 'text/css';
style.appendChild(document.createTextNode(""));
head.appendChild(style);

IE 10 で失敗する 2 つのサイト:

http://www.momswhothink.com/cake-recipes/banana-cake-recipe.html

http://www.bakerella.com/
4

4 に答える 4

3

あなたの問題はこの行だと思います:

style.appendChild(document.createTextNode(""));

ここでは、スタイルで属性を指定しない限り、HTML 仕様に従って許可されていない要素にText Nodea を挿入しています。Stylescoped

スタイルの仕様はこちら(Text Nodeはフローコンテンツ)でご確認ください。

クロスブラウザ方式でスタイル要素を作成する良い方法は、こちらにあります。

于 2013-08-23T19:27:32.903 に答える
0

IE10 でそのエラーが発生する理由がわかりません... IE<9 では、<style>タグの innerHTML を変更しようとするとエラーがスローされることを知っています。まだ実行可能です。少し回避策を講じる必要があります。例 (jQuery を使用):

var customCSS = "body { color: red; }";
var customStyle = $('<style type="text/css" />');
try {
    $(customStyle).html(customCSS); // Good browsers
} catch(error) { 
    $(customStyle)[0].styleSheet.cssText = customCSS; // IE < 9
}
$(customStyle).appendTo('head');

お役に立てれば。

于 2013-08-23T19:34:18.687 に答える
0

ページにスタイル セクションを動的に追加する必要はありますか? 次のように、その場で属性自体を追加するのはどうですか:

$(document).ready( function() {
    $('[id="yourObjID"]').css('yourAttribute','itsvalue');
});

属性ではなくスタイル セクションを動的に追加するのは、やり過ぎのように思えます。

于 2014-05-06T03:12:31.113 に答える