Joe*_*ale 2 javascript google-maps-api-3 ios jquery-mobile cordova
我以为我有很多想法的Javascript,然后这个(看似基本的)东西弹出:
我有一个使用谷歌地图的Phonegap/jQuery Mobile应用程序.如果手机的互联网连接暂时无法使用,并且应用在应用启动时尝试加载Google Maps API的时间,则所有与地图相关的功能自然无效.
然而,奇怪的是这个代码导致它所在的函数中断并停止执行if if check(意味着该doSomething()行永远不会执行):
function myFunction() {
if(google === undefined) {
alert("Google Maps didn't load!");
}
doSomething();
}
Run Code Online (Sandbox Code Playgroud)
在Safari的开发人员工具中查看控制台时,我看到了这篇文章标题中的错误.
不检查这样的未定义变量应该是安全的吗?我想处理未加载Google Maps API的边缘情况,但如果我无法检查未定义,我该怎么办呢?我尝试过这样做if(!google),但结果相同.
当用户使用地图导航到页面时,我也尝试使用Google Loader动态加载地图API,但我无法使其工作(Loader必须动态加载,以便有帮助,我似乎无法动态加载任何脚本).我尝试使用纯Javascript动态执行此操作,但我认为document.writeGoogle Maps API Javascript在Mobile Safari上打破了它.我也试过使用jQuery $.getScript()没有成功.
在任何情况下,如果我能够检测到地图API尚未被加载,我应该能够处理这种边缘情况,所以这一切归结为:如何做到这一点,以及为什么上述未定义的检查不起作用?
试试这个:
function myFunction() {
if(window.google === undefined) {
alert("Google Maps didn't load!");
}
doSomething();
}
Run Code Online (Sandbox Code Playgroud)
那是因为google被解释为非声明的标识符,而可能是或不是window.google属性.windowundefined
你也可以使用!window.google,因为google是一个对象,因此不能null,undefined,0也没有其他falsy值.
| 归档时间: |
|
| 查看次数: |
5847 次 |
| 最近记录: |