Ленивая загрузка google maps api v3 jQuery callback
Я делаю ленивую загрузку карт google api v3 javascript
В документации говорится о том, что в качестве параметра обратного вызова в url указывается имя функции, которая будет выполнена, когда загрузился script.
$(document).ready(function(){
var s = document.createElement("script");
s.type = "text/javascript";
s.src = "http://maps.google.com/maps/api/js?v=3&sensor=true&callback=gmap_draw";
$("head").append(s);
});
Поэтому я должен определить функцию gmap_draw().
Когда я заключу эту функцию в блок domready, она не видна.
Любые обходные пути этой проблемы? (за исключением того, что функция вышла из блока domready)
Ответы
Ответ 1
Поскольку обратный вызов должен быть глобальным, вы можете сделать его, обратившись к window
из готового обработчика.
$(document).ready(function(){
var s = document.createElement("script");
s.type = "text/javascript";
s.src = "http://maps.google.com/maps/api/js?v=3&sensor=true&callback=gmap_draw";
window.gmap_draw = function(){
alert ("Callback code here");
};
$("head").append(s);
});
Ответ 2
Другой вариант - использовать Google Loader:
$.getScript('https://www.google.com/jsapi', function()
{
google.load('maps', '3', { other_params: 'sensor=false', callback: function()
{
// Callback code here
}});
});