chargement asynchrone en javascript avec le document.écrire
Je suis en train de asynchrone de google map api javascript.
Donc, la balise script fonctionne <script src="https://maps.googleapis.com/maps/api/js?sensor=false"></script>
Mais, à la suite async version qui ne fonctionne pas.
(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);
})();
Après un certain point d'arrêt+inspecter l'action, j'ai trouvé que cette ligne ne fonctionne pas correctement dans le mode asynchrone.
document.write('<' + 'script src="' + src + '"' +
' type="text/javascript"><' + '/script>');
L'objet document dans le mode de synchronisation est un "HTMLDocument", mais dans le mode asynchrone est un "document #" à la place. Quelque chose s'est passé à l'objet document après le chargement de la page. Pensées?
Acclamations.
Mise à jour: cette question est plus de savoir pourquoi le document.écrire n'est pas déclenché, plutôt que asynchrone en charge de l'api google map. Si vous définissez un point d'arrêt sur cette ligne, vous pouvez voir le document.écrire la fonction existe. Est ce que cela a quelque chose à voir avec le fait que le document.écrire est originaire?
OriginalL'auteur user1736525 | 2012-10-22
Vous devez vous connecter pour publier un commentaire.
document.write
ne peut pas être appelé à partir d'un script asynchrone, parce qu'il est détaché du document et donc de votre JS analyseur ne sais pas où le mettre. au mieux, le navigateur va l'ignorer. au pire, il pourrait écrire sur le haut de votre document actuel (comme dans le cas de l'appel de document.écrire après que le document a la fin du chargement).Malheureusement, la seule réponse est de réécrire le script, qui, dans le cas d'une api de google n'est probablement pas une option viable.
oui google est une blague
OriginalL'auteur market
J'ai juste couru dans un problème similaire lorsque le chargement asynchrone annonces. J'ai été en mesure d'obtenir
document.write
approchée dans mon application de ces situations par un changement de comportement ($
dans ce cas se réfère à jQuery):Cette approche pourrait être amélioré, mais il fonctionne assez bien pour mes besoins. Nous espérons que vous trouverez utile.
utiliser le
callback=somefunction
param initiale de l'api de chargeOriginalL'auteur HandyAndyShortStack
Lorsque vous utilisez le paramètre
callback
à l'intérieur du script-URL, le script n'utilise paswrite()
et vous serez en mesure de charger l'API asynchrone.Voir: https://developers.google.com/maps/documentation/javascript/tutorial?hl=en#asynch
Quand vous n'aimez pas l'avertissement de ne pas charger l'API plusieurs fois.
C'est jquery mobile asp mvc à l'aide de la jqm mode ajax. Jusqu'à ce qu'il semble plus propre à charge l'API encore une fois, plutôt que d'utiliser le jqm événements.
OriginalL'auteur Dr.Molle
Ne pas utiliser
document.write()
, pour les raisons expliquées par le marché et le Dr Molle. UtilisationappendChild()
au lieu de cela, comme le fait le Google exemple de chargement asynchrone.OriginalL'auteur Marcelo