(懒惰)重构后加载谷歌地图不起作用

(lazy) loading google maps is not working after refactoring

本文关键字:加载 谷歌地图 不起作用 重构 懒惰      更新时间:2023-09-26

我只在需要时加载谷歌地图。在我重构代码之前,它是这样工作的:

function initialize_map_brand() {
  (...)
}
jQuery(document).ready(function ($) {
    load_google_map('initialize_map_brand');
});

重构后,我的代码如下:

lib = {
    loadGoogleMapScript: function(_callback) {
      (...)
      script.src = 'http://maps.google.com/maps/api/js?sensor=false&callback=' +_callback;
    }
}

Page = {
    viewPage: {
        init: function() {
            lib.loadGoogleMapScript(self.initialize_map);
        },
        initialize_map: function() {
            var locations = [ (...)
        }
    }
}
jQuery(document).ready(function ($) {
    Page.viewBPage.init();
});

现在我得到了这个错误:

"NetworkError:400错误请求-http://maps.google.com/maps/api/js?sensor=false&callback=函数%20()%20{var%20locations%20=%20[[%….

它似乎获取了整个函数代码并将其传递到url中。那么,如何使用新代码正确加载谷歌地图脚本呢?

把我的小提琴放在这儿。

根据文档,您需要为url callback参数提供一个字符串,该字符串具有全局作用域中函数的名称。

相反,您将函数作为参数传递,因此函数体被附加到url中。

var Page = {
    viewPage: {
        init: function() {
            lib.loadGoogleMapScript('Page.viewPage.initialize_map');
        },
        initialize_map: function() {
        }
    }
};
window.Page = Page;