var style = document.createElement('style');
style.appendChild(document.createTextNode('a img{ border : none }'));
とかするとエラーになる。
(styleをdocument.getElementsByTagName('head')[0].appendChildした後でもエラーになる)
styleのinnerHTMLもだめ。
(「予期しないメソッドの呼び出し、またはプロパティ アクセスです」とか言われる)
var style = document.createTextNode(([
'<style type="text/css">',
'a img { border : none };',
'</style>'
]).join(''));
document.getElementsByTagName('head')[0].appendChild(style);
で解決
//----------------------------
してなかった。これじゃheadにtext書いてるだけなので有効にならない。
var div = $d.createElement('div');
div.innerHTML = ([
'div<div><style type="text/css">',
'a img { border : none };',
'</style></div>'
]).join('');
var head = $d.getElementsByTagName('head')[0];
head.appendChild(div.getElementsByTagName('style')[0]);
これで解決。'div<div>'この辺の指定にびびる。
style.appendChild(document.createTextNode('a img{ border : none }'));
とかするとエラーになる。
(styleをdocument.getElementsByTagName('head')[0].appendChildした後でもエラーになる)
styleのinnerHTMLもだめ。
(「予期しないメソッドの呼び出し、またはプロパティ アクセスです」とか言われる)
var style = document.createTextNode(([
'<style type="text/css">',
'a img { border : none };',
'</style>'
]).join(''));
document.getElementsByTagName('head')[0].appendChild(style);
で解決
//----------------------------
してなかった。これじゃheadにtext書いてるだけなので有効にならない。
var div = $d.createElement('div');
div.innerHTML = ([
'div<div><style type="text/css">',
'a img { border : none };',
'</style></div>'
]).join('');
var head = $d.getElementsByTagName('head')[0];
head.appendChild(div.getElementsByTagName('style')[0]);
これで解決。'div<div>'この辺の指定にびびる。
有用な情報をありがとうございます。ちょうどこの症状に出くわし、解決法を探してこちらのページにたどりつきました。
試してみたところ、手元の環境では、
> '<style type="text/css">',
> 'a img { border : none };',
> '</style>'
のような記述では駄目でしたが、
> 'dummy <style type="text/css">',
> 'a img { border : none };',
> '</style>'
のように、'<style ~>' の前にダミーのテキストを何か入れればOKでした。Windows XP上のIE8とIE6(IE8での互換表示)で確認しました。
それにしてもなぜこんな仕様(実装)になっているのか、なんとも不思議です。
以上、お礼のついでにご報告まで。
ご報告ありがとうございます。
なんというか、仕様というよりバグなんじゃないかって気がしますね。