だいぶ前に、動的にscriptタグを生成する方法について書きました。
最近、jQueryにはまっていることもあり、jQueryを使ってもっとかっこよく作ることはできないのかなーっと調べていました。
結論からいうと、難しいようです。
そこで、いつもどおり、native javascriptで、上のエントリーを参考に、粛々と書くことにします。jQueryのappend,prepend,before,afterメソッドにscriptタグを含んだDOM要素なり文字列なりを渡したときは、script以外の部分はちゃんと追加されますが、scriptタグの部分は追加されずに、スクリプトがその場で実行(eval)されてしまうのだそうです。
via:headタグに要素を追加できない。
var script = document.createElement('script'); script.setAttribute("type", "text/javascript"); script.setAttribute("src", 'hoge.js'); document.getElementsByTagName("head")[0].appendChild(script); |
var script = document.createElement('script'); script.setAttribute("type", "text/javascript"); script.setAttribute("src", 'hoge.js'); if($.browser.msie){ script.onreadystatechange = function(){ if(script.readyState == 'complete' ||script.readyState == 'loaded'){ loaded(); } }; }else{ script.onload = function(){ loaded(); }; } document.getElementsByTagName("head")[0].appendChild(script); function loaded(){ } |
ブラウザ判定の部分だけ、jQueryというちょっと複雑な気分。
もっと楽に作れないのかなー。。。
0 コメント:
コメントを投稿