我以为我已经基本了解了 Javascript,然后弹出了这个(看似基本的)东西:
我有一个使用 Google 地图的 Phonegap / jQuery Mobile 应用程序。如果手机的互联网连接暂时不可用,并且在应用程序启动时尝试加载 Google Maps API 的确切时间,所有与地图相关的功能自然将无法正常工作。
然而,奇怪的是这段代码会导致它所在的函数在 if 检查之后中断并停止执行(这意味着该doSomething()
行永远不会执行):
function myFunction() {
if(google === undefined) {
alert("Google Maps didn't load!");
}
doSomething();
}
在 Safari 的开发人员工具中查看控制台时,我在这篇文章的标题中看到了错误。
检查像这样的未定义变量不应该是安全的吗?我想处理未加载 Google Maps API 的这种边缘情况,但如果我无法检查未定义,我该怎么做?我试着做if(!google)
,但结果是一样的。
当用户使用地图导航到页面时,我还尝试使用他的 Google Loader 动态加载地图 API,但我无法让它工作(加载器也必须动态加载才能有帮助,我似乎无法动态加载任何脚本)。我也尝试使用纯 Javascript 动态执行此操作,但我认为document.write
Google Maps API 中的 Javascript 在 Mobile Safari 上打破了这一点。我也尝试使用 jQuery$.getScript()
没有成功。
无论如何,如果我能检测到地图 API 尚未加载,我应该能够处理这种边缘情况,所以这一切都归结为:如何做到这一点,为什么上述未定义的检查不起作用?