2011-12-22 5 views
5

私はGoogle MapsのAPIをロードするには、次のHTMLタグを使用します。スクリプトはによってロードされるまでGoogleマップライブラリのロードブロックページ

<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script> 

はしかし、それはHTMLでその下にありますロードし、すべてをブロックしていますブラウザ。

このロードをノンブロッキングにする方法はありますか?

答えて

3

はい、非同期に読み込むことができます。 http://code.google.com/apis/maps/documentation/javascript/basics.html#Async

+2

「非同期」セクションがドキュメントから削除されているようです... [このページ](https://google-developers.appspot.com/maps/documentation/javascript/examples/map-simple-非同期)、ソースにはGoogle Mapsライブラリの非同期読み込みのサンプルが含まれています –

4

このコードは、urlとオプションのコールバックをとる遅延関数を提供します。 ページのレンダリングをブロックせずにスクリプトを非同期に読み込みます。 私はプロテクションを入れているので、同じscritpを2回ロードしないので、好きなだけ何度でも呼び出すことができます。

defer = (function() { 
    var urls = []; 

    return function (url, callback) { 
     var inc; 

     if (url && urls.indexOf(url) === -1) { 
      inc = document.createElement('script'); 
      inc.async = true; 
      inc.src = url; 
      inc.onload = callback || function() {}; 
      document.getElementsByTagName('head')[0].appendChild(inc); 
     } 
    } 
}()); 

defer('http://maps.google.com/maps/api/js?sensor=false'); 

これは、非同期読み込みに失敗しない任意の外部javascriptで機能します。

+0

この素晴らしいおかげでありがとうございましたが、私はむしろこの場合「公式」な方法を使用したいと考えています。 –

+0

同じことです。 MineはGoogleマップの代わりに任意のURLを読み込む機能を提供します。 – Munter

+0

@一部のスクリプトで非同期読み込みが失敗する状況がありますか?私はあなたの答えの最後の行に関してこの質問をしています。 –

関連する問題