人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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





●質問者: zunkun
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:chrome ff IE js Write
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● kn1967a
●27ポイント

できない。

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


2 ● aside
●27ポイント

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

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

やり方がでてきますよ


3 ● regnif
●26ポイント

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

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/

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ