代码之家  ›  专栏  ›  技术社区  ›  astropanic

延迟加载google maps api v3 jquery回调

  •  11
  • astropanic  · 技术社区  · 14 年前

    我懒得加载谷歌地图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 回复  |  直到 12 年前
        1
  •  21
  •   Chris Laplante    14 年前

    因为回调必须是全局的,所以可以通过访问 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
  •  32
  •   Jonathan    12 年前

    另一个选择是使用 Google Loader :

    $.getScript('https://www.google.com/jsapi', function()
    {
        google.load('maps', '3', { other_params: 'sensor=false', callback: function()
        {
            // Callback code here
        }});
    });