JSONPファイルの読み込み位置について

考えてみたらあたりまえなのだが、結局かなりはまってしまったので、メモ。

JSONPファイルをスタティックに読み込むとき、その位置がJSONPファイル内のコールバック関数の定義より前だと、関数の未定義エラーが発生する。具体的には

<script type=”text/javascript” src=”jsonp.js”></script>

と、書いた後jsonp.jsで呼び出している関数の定義をその下で、

function jsonFeed(json) {
(ここにjsonを受け取った時の処理を)
}

と書くと、jsonp.jsでjsonFeed関数が未定義のエラーとなる。

<script type=”text/javascript” src=”jsonp.js”></script>

を関数の定義より、下に移動すればOK。
まあ、上から下に順番に処理されるから当然といえば当然ですね(-.-)

そんなこと言っていたら、jsonFeed関数の定義をonloadイベント処理でやったらいいじゃんと、指摘された。そっか、そうしたらjsonFeed関数を定義するタイミングには確実にjsonp.jpは読み込まれているのかぁーーーーーー