javascript - libreria - jquery.min.js cdn
google.setOnLoadCallback con jQuery $(document).ready(), ¿está bien mezclar? (4)
Estoy usando Google Ajax API y me sugieren que use google.setOnLoadCallback()
para hacer varias cosas relacionadas con su API, pero también estoy usando jQuery''s $(document).ready()
para hacer otras cosas de JS, no relacionadas con Google API.
¿Es seguro mezclar estos dos enfoques en un solo documento? No noté ningún problema todavía, pero supongo que es una cuestión de escala.
Si su código JavaScript reside en su propio archivo js y no dentro del documento HTML, también puede hacerlo en el documento:
<script>
google.load("jquery", "1.7.0");
google.load("jqueryui", "1.8.16");
google.setOnLoadCallback(function() {
var script = document.createElement("script");
script.setAttribute("type", "text/javascript");
script.setAttribute("src", "my.js");
document.getElementsByTagName("html")[0].appendChild(script);
});
</script>
Esto carga my.js
después de que todo lo demás se carga desde google. En su archivo my.js
, puede hacer $(document).ready(...)
. Por lo tanto, el código de su aplicación es independiente de "cargado por google" o "cargado directamente desde su servidor".
Lamento haber levantado esto de entre los muertos, pero 1) Sigue apareciendo como una "respuesta" a este problema y 2) He encontrado una mejor solución.
Hay un tercer argumento opcional en la función google.load
que toma un objeto de opciones de configuración. Una de las opciones es la callback
. También elimina la necesidad de una llamada a setOnLoadCallback
por separado.
P.ej
google.load(''visualization'', ''1.0'', {
''packages'': "charttype",
''callback'': $jQ.proxy(me.setupChart, me)
});
Asi que:
<script src="https://www.google.com/jsapi"></script>
<script>
$(document).ready(function () {
function mapsLoaded() {
etc etc etc
}
google.load("maps", "2", {"callback" : mapsLoaded});
});
</script>
¿Por qué mezclar cuando puede hacerlo todo con $(document).ready()
? Solo deshazte de la función google.setOnLoadCallback
y usa jQuery''s $(document).ready()
.
Esta:
google.setOnLoadCallback(chartEnrollment);
se convierte
$(document).ready(chartEnrollment);
Tienes que hacer esto bastante
google.setOnLoadCallback(function() {
$(function() {
// init my stuff
});
});
No puede hacer que $(document).ready()
sin $
(el objeto jQuery) esté disponible, por lo que debe ir dentro de la devolución de llamada. Y no puede estar seguro de que el documento esté listo dentro de la devolución de llamada, por lo que también debe estar ready()
.