10752


HTML側で下記のような構造だったとします。

[code]

    <head>
        ～
        <script src="A.js">
    </head>
    <body>
        ～
        <script src="B.js">
    </body>
    
[/code]

「A.js」は具体的にはGoogleAnalyticsの解析タグで、便宜的に「A.js」と書きます。  
ここで宣言されているga関数を「B.js」で使いたく考えています。

読み込む順序的にbody側に記述すれば行けるかなと思ったのですが、Chromeでは数回に1回、IEではほぼ毎回「A.js」より前に「B.js」のロードが完了しエラーが返されます。

「A.js」には手を出せず、HTML本体も「B.js」をロードする以外は手を出すことができない状態で、「B.js」側で「A.js」がHTMLで読み込みが完了しているかどうかを判定する方法があればご教示頂ければと思います。


CC BY-SA 3.0
2015-05-29T03:32:22.503
10743
2015-05-29T08:06:48.950
8864
question
javascript
外部ファイルの読み込み完了判定をしたい


普通の関数(`ga`)が定義済みかどうかだったら、`window.ga ==
undefined`が真ならまだ読み込まれていない(falseなら既に読み込まれている)と判断できると思います。


CC BY-SA 3.0
2015-05-29T07:52:25.260
10752
2015-05-29T07:52:25.260
5044
10743
answer


今のGoogle Analyticsのコードの場合、< script>タグ内でga関数を定義し終えてしまうため、質問のような現象にはならないはずですが。  
[JavaScript Snippet
Reference](https://developers.google.com/analytics/devguides/collection/analyticsjs/advanced#snippetReference)より（i=window、r="ga"です。）

[code]

    // Creates an initial ga() function.  The queued commands will be executed once analytics.js loads.
    i[r] = i[r] || function() {
      (i[r].q = i[r].q || []).push(arguments)
    },
    
[/code]


CC BY-SA 3.0
2015-05-29T08:06:48.950
10755
2015-05-29T08:06:48.950
4236
10743
answer