この関数を使用して、Google Maps API を動的にロードしています。
App.prototype.loadScript = function(src) {
$(document.createElement("script")).attr({
type: "text/javascript",
src: src
}).appendTo("body");
};
この URL を引数として渡します。
"//maps.googleapis.com/maps/api/js?v=3.8&sensor=false&language=" + locale + "&callback=window.app.googleMapsCallback"
初めてページを読み込んだときに問題なく動作し、コールバックが発生します。ただし、Android でページをリロードすると、window.app.googleMapsCallback は起動しません。Chrome と iOS ブラウザで正常に動作します。
スクリプトがキャッシュされているようで、再ロードされません。タイムスタンプ パラメータを URL に追加しようとしましたが、役に立ちませんでした。
コールバックが常に発生するようにするにはどうすればよいですか?
アップデート:
さらにテストすると、キャッシュのクリアとリロードも機能しません。ページを正常にリロードするには、すべてのブラウザー データを ([設定] -> [アプリケーション] -> [アプリケーションの管理] で) 消去する必要があります。
トップレベル関数をコールバックとして使用しても違いはありません。
リロード時に JavaScript エラーは発生しません。
私は Android 2.3.4 で HTC Evo 4G を使用しており、私のアプリケーションは jQuery Mobile で構築されています。