懒加载google maps api v3 jQuery回调

ast*_*nic 11 jquery google-maps lazy-loading callback

我懒得加载谷歌地图api v3 javascript

该文档说明了如何在脚本加载时将作为函数名称的回调参数作为回调参数执行.

 $(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);
 });
Run Code Online (Sandbox Code Playgroud)

所以我必须定义gmap_draw()函数.

当我将此函数包含在domready块中时,它是不可见的.

这个问题的任何变通方法?(除了将功能放在domready块之外)

Jon*_*han 32

另一个选择是使用Google Loader:

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


Chr*_*nte 21

因为回调必须是全局的,所以你可以通过window在ready处理程序中访问来创建一个回调.

$(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);  
});
Run Code Online (Sandbox Code Playgroud)