googleanalyticsの以前のコードのように

外部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>');


回答の条件
  • 1人10回まで
  • 登録:
  • 終了:2009/07/21 23:55:03
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答3件)

id:kn1967a No.1

回答回数356ベストアンサー獲得回数7

ポイント27pt

できない。

JavaScriptでJavaScriptを呼び出すことはルール違反。

id:aside No.2

回答回数339ベストアンサー獲得回数31

ポイント27pt

難易度が高かった記憶がありますが

「動的スクリプトローディング」で検索すると

やり方がでてきますよ

id:i4ooon No.3

回答回数56ベストアンサー獲得回数20

ポイント26pt

ビミョーに困っていることが不明確なので、はずしていたら、すまそ。

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に対応していれば実行できたりしますがねぇ・・・

http://semooh.jp/jquery/api/ajax/jQuery.ajax/options/

  • id:i4ooon
    いまさらだが、それなりに時間をかけて回答したのを投げっぱなしジャーマンされるとツレーな・・・

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません