私はGoogle Ajax APIを使用しており、APIに関連するさまざまなことを行うために使用することを提案していますが、Google APIに関連しない他のJSgoogle.setOnLoadCallback()
のことを行うためにjQueryも使用しています。$(document).ready()
これら 2 つのアプローチを 1 つのドキュメントに混在させても安全ですか? まだ問題は感じていませんが、規模の問題だと思います。
私はGoogle Ajax APIを使用しており、APIに関連するさまざまなことを行うために使用することを提案していますが、Google APIに関連しない他のJSgoogle.setOnLoadCallback()
のことを行うためにjQueryも使用しています。$(document).ready()
これら 2 つのアプローチを 1 つのドキュメントに混在させても安全ですか? まだ問題は感じていませんが、規模の問題だと思います。
あなたはほとんどこれをしなければなりません:
google.setOnLoadCallback(function() {
$(function() {
// init my stuff
});
});
(jQuery オブジェクト) が利用可能でないとできないので、コールバック内に移動する必要があり$(document).ready()
ます。$
また、コールバック内でドキュメントの準備ができているかどうかを確認することはできないため、それも行う必要がありready()
ます。
これを死から蘇らせて申し訳ありませんが、1)この問題に対する「答え」としてまだ出てきており、2)より良い解決策を見つけました。
google.load
構成オプションのオブジェクトを取る関数には、オプションの 3 番目の引数があります。オプションの 1 つですcallback
。setOnLoadCallback
また、別の呼び出しの必要性を取り除きます。
例えば
google.load('visualization', '1.0', {
'packages': "charttype",
'callback': $jQ.proxy(me.setupChart, me)
});
そう:
<script src="https://www.google.com/jsapi"></script>
<script>
$(document).ready(function () {
function mapsLoaded() {
etc etc etc
}
google.load("maps", "2", {"callback" : mapsLoaded});
});
</script>
JavaScript コードが HTML ドキュメント内ではなく独自の js ファイル内にある場合は、ドキュメント内でこれを行うこともできます。
<script>
google.load("jquery", "1.7.0");
google.load("jqueryui", "1.8.16");
google.setOnLoadCallback(function() {
var script = document.createElement("script");
script.setAttribute("type", "text/javascript");
script.setAttribute("src", "my.js");
document.getElementsByTagName("html")[0].appendChild(script);
});
</script>
これはmy.js
、Google から他のすべてのものが読み込まれた後に読み込まれます。my.js
ファイルで、次のことができます$(document).ready(...)
。したがって、アプリケーション コードは、「Google によって読み込まれる」または「サーバーから直接読み込まれる」から独立しています。