外部jsをコールした後にその外部js内部のfunctionを呼び出すタグの全体を外部js化したいと思っています。
documentwriteを利用して試みたところ外部jsが読み込み終わる前にfunctionが呼ばれるようで
エラーとなってしまいます。(IEやchromeで動きません。FFだときちんと動いています。)
これを回避する方法を教えてください。
よろしくおねがいします。
【エラーになる外部js化したタグ】
document.write('<scri'+'pt src="http://www.google-analytics.com/urchin.js" type="text/javascript"></scri'+'pt>');
document.write('<scri'+'pt type="text/javascript">_uacct = "XXXXX";_udn="XXXXX";_ucto="XXXXX";urchinTracker();</scri'+'pt>');
ビミョーに困っていることが不明確なので、はずしていたら、すまそ。
ChromeとIEで確認済みです。
◆解決例
http://regnif.web.fc2.com/test/jquery/
◆NG例
http://regnif.web.fc2.com/test/jquery/ng.html
両者の違いは、12行目と16行目がコメントか非コメントか。
イコール、document.writeで外部読み込みしたJSファイルで定義された
関数を呼び出す位置の違いですね。
ポイントはjQueryの★の位置にスクリプトを書くことでしょうね。(もう少し単純に外部JSを読み込む行を上のほうに書くことで解消するケースも昔はよくありましたが、このためだけにってのも何ですが、jQuery使ってみてはどうでしょう?)
(function($){
jQuery(document).ready( function() {
★
} );
})(jQuery);
旧Google Analyticsスニペットの【エラーになる外部js化したタグ】とやらのままだと、OK/NG判定できないので、こんなサンプル作りました。
さすがに今回の質問からは外部ドメインのJavaScriptという読み解きはできませんが、仮にそうだとしてもJSONPに対応していれば実行できたりしますがねぇ・・・
コメント(1件)