0

この関数を使用して、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 で構築されています。

4

1 に答える 1

1

Android エミュレーター (バージョン 2.3.3 と 2.3.5 の両方。2.3.4 バージョンはありません。申し訳ありません) を使用して問題を再現しようとしましたが、できませんでした。コールバックは、ページのリロードごとに正常に実行されます。

これはテスト jsfiddle です: http://jsfiddle.net/MartinodF/gbAuL/。問題をテストし、コードベースの他の何かに依存するものを除外するための最小限のコードのみが含まれています。

お使いの携帯電話で試していただけますか?jsfiddle で [モバイルでデバッグ] (上部バーの [実行] の右側にあるボタン) をクリックし、提供される URL ( http://jsfiddle.net/m/ABCのようなもの) を Androidで開きます。ブラウザ。「コールバックが呼び出されました」というポップアップが表示されます。ページをリロードして、動作するかどうかを確認してください。

そうでない場合は、さらにテストするために、2.3.4 の HTC Sense スキン デバイスを試してみることができます。

于 2012-02-27T00:32:55.923 に答える