jQueryでCSSをappendしようとしたらクラッシュしてハマった
jQueryを利用してブックマークレットを作ってたのだけど、
Firefoxで上手くいって「さ、念のためIEもやるかぁ」みたいに確認してみたらクラッシュ。
何でエラー出てるのかわからず、あれ?あれ?ってなった。
で、確認していったらlinkタグをheadにappendする時にクラッシュすることが判明。
試してみたら以下の通り。
// linkだけ追加 OK $('<link/>') .appendTo('head'); // relを追加 OK $('<link/>') .attr('rel', 'stylesheet') .appendTo('head'); // typeを追加 OK $('<link/>') .attr('rel', 'stylesheet') .attr('type', 'text/css') .appendTo('head'); // 完全な形で追加 crash!! $('<link/>') .attr('rel', 'stylesheet') .attr('type', 'text/css') .attr('href', 'http://d.hatena.ne.jp/lesamoureuses/path_to_css.css') .appendTo('head');
hrefを追加したらcrashしたわけではなく、CSSのlinkタグの完全な形でheadタグにappendするとクラッシュするっぽい。
# 順番を変えて試したら最後に追加したところでエラーになった
で、結局文字列でlinkタグを作り、headの中に入れることにしました。
// 文字列からlink作る OK $('<link rel="stylesheet" type="text/css" href="http://d.hatena.ne.jp/lesamoureuses/path_to_css.css" />') .appendTo('head');
何でだろうね。よくわからん。
IEはリードオンリーなのかしら。
jQueryのバージョンは1.2.6でした。