我最近在延迟加载/动态加载google maps api v3时遇到了以下问题:为了检查api是否已完全加载,我在Google的文档页面上跟踪了instructions。在全局范围内使用正常函数回调名称(如& callback = initialize )可以正常工作。也适用于某个名称空间内的函数回调,如& callback = Namespace.initialize 。
现在我的函数位于 Namespace.foo [0] .initialize (“Namespace”和“foo”属于object类型)下。现在的问题是我无法正常访问此功能。我尝试了几种构建回调字符串的方法,每种方法都列在下面,而且任何firebug都告诉我它不起作用:
&callback=Namespace.foo[0].initialize
Firebug: NetworkError: 403 Forbidden - <http://maps.googleapis.com/maps/api/js?v=3...&callback=Namespace.foo[0].initialize...>
&callback=Namespace.foo.0.initialize
Firebug: missing ; before statement
Firebug: [Break On This Error] window.Namespace.foo[0].initialize()
&callback=Namespace.foo%5B0%5D.initialize
Firebug: NetworkError: 403 Forbidden - <http://maps.googleapis.com/maps/api/js?v=3...&callback=Namespace.foo[0].initialize...>
我很感谢每一个提示和/或解决方案!
背景资料:我所做的也可能很有趣。脚本将动态加载html,css,data和google maps api到外部网页(在web-widget中)。现在我使用jQuery的延迟对象来排队不同的包括,例如首先加载css / javascript / html,然后接收数据,最后在先前加载的结构中设置谷歌地图。延迟对象比使用回调处理不同步骤更好(并且更容易!),但是当完成jQuery.getScript方法(加载google maps api)时,将触发success事件并返回deferred.resolve。太糟糕了,这可能只是处理身份验证(通过客户端密钥),然后异步加载谷歌地图main.js.这非常糟糕,因为我需要等待api完全加载......