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/14 23:51:52
  • 終了:2009/07/21 23:55:03

回答(3件)

id:kn1967a No.1

kn1967a回答回数356ベストアンサー獲得回数72009/07/15 07:55:00

ポイント27pt

できない。

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

id:aside No.2

aside回答回数339ベストアンサー獲得回数312009/07/15 17:03:51

ポイント27pt

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

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

やり方がでてきますよ

id:i4ooon No.3

regnif回答回数56ベストアンサー獲得回数202009/07/15 23:38:06

ポイント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
    いまさらだが、それなりに時間をかけて回答したのを投げっぱなしジャーマンされるとツレーな・・・

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

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

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

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません