Google マップ API JavaScript を非同期にしようとしています。
したがって、通常のスクリプトタグが機能します<script src="https://maps.googleapis.com/maps/api/js?sensor=false"></script>
ただし、次の非同期バージョンはそうではありません。
(function () {
var gmap = document.createElement('script'); gmap.type = 'text/javascript'; gmap.async = true;
gmap.src = 'https://maps.googleapis.com/maps/api/js?sensor=false';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(gmap, s);
})();
いくつかのブレークポイント + インスペクション アクションの後、この行が非同期モードで正しく実行されないことがわかりました。
document.write('<' + 'script src="' + src + '"' +
' type="text/javascript"><' + '/script>');
同期モードのドキュメント オブジェクトは「HTMLDocument」ですが、非同期モードでは代わりに「#document」です。ページがロードされた後、ドキュメント オブジェクトに何かが発生しました。考え?
乾杯。
更新:この質問は、Google マップ API を非同期ロードするのではなく、document.write が起動されない理由に関するものです。この行にブレークポイントを設定すると、document.write 関数が存在することがわかります。これは、document.write がネイティブであるという事実と関係がありますか?