ロードフレームワークとしてrequire.jsを使用してモバイルハイブリッドアプリケーションを作成しています。読み込みエラーに問題があります。私がやろうとしているのは、デバイスがオフラインで、画面上に地図を表示するために必要なGoogleマップAPIスクリプトをダウンロードできないときに、フォールバックソリューションをセットアップすることです。私が得るものはすべてrequireJsタイムアウトエラーを処理する方法は?
Uncaught Error: Load timeout for modules: async!http://maps.googleapis.com/maps/api/js?sensor=true
ですが、私はこのエラーをキャッチして代替実装を提供することはできません。ここに私のgmapsモジュールの定義
define('gmaps', ['async!http://maps.googleapis.com/maps/api/js?sensor=true'],function(){
return window.google.maps;
});
は、私は何ができますか?
EDIT
私は可能な解決策をあなたの助けのおかげで見つけることができました。私のセットアップは、この
require.config({
paths: {
gmaps: ['http://maps.googleapis.com/maps/api/js?sensor=true', 'lib/dummymaps']
}
}
dummymapsよう要求してきただけの単純なモジュールです:私は私の「親」モジュールで次に
define({
dummy: true
});
:
define(["gmaps"],function(gmaps){
...
if(typeof gmaps.dummy != 'undefined' && gmaps.dummy == true){
// use a local image as map
} else {
// initialize google maps canvas
}
});
はそれがだ、あなたと思いますか良い解決策?
EDIT 2:
が私を許し、それがこのコードで働いていません。 gmapsは完全にロードするために非同期プラグインを使用する必要があり、プラグインで動作させることができないため、代替実装にはいつも戻っています。
何をするにしてもプロトコルの相対URL(//で始まる)に行くと、httpとhttpsで問題に陥ることはありません。これらの問題はブラウザ固有のもので、警告が表示されたり、JS-Filesがまったく読み込まれないことがあります。 例:http://cdnjs.com/ – nekaab
ありがとう、私はついにこの種のURLが今日使われている理由を知りました! – sangaran
私もこの問題を抱えています。タイムアウトエラーはどこにあるのですか?私はそれをローカルで、またはグローバルエラーハンドラでキャッチすることはできません。 Googleアナリティクスが原因で問題が発生している場合は、モジュールのロードを続行するだけです。 –