ленивая загрузка google maps api v3 jQuery callback - PullRequest
11 голосов
/ 05 ноября 2010

Я делаю ленивую загрузку Google Maps api v3 javascript

В документации сказано, что в качестве параметра обратного вызова в URL указывается имя функции, которая будет выполняться после загрузки скрипта.

 $(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)

Ответы [ 2 ]

32 голосов
/ 20 января 2013

Другой вариант - использовать Google Loader :

$.getScript('https://www.google.com/jsapi', function()
{
    google.load('maps', '3', { other_params: 'sensor=false', callback: function()
    {
        // Callback code here
    }});
});
21 голосов
/ 05 ноября 2010

Поскольку обратный вызов должен быть глобальным, его можно сделать, обратившись к 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);  
});
...