javascript - "ReferenceError: Can' t 查找变量 : google"on checking for undefined

标签 javascript ios jquery-mobile google-maps-api-3 cordova

我以为我已经掌握了 Javascript,然后弹出了这个(看似基本的)东西:

我有一个使用 Google map 的 Phonegap/jQuery Mobile 应用程序。如果手机的互联网连接短暂不可用,并且在应用程序启动时尝试加载 Google map API 的同时,所有与 map 相关的功能自然将无法工作。

但是,奇怪的是,这段代码会导致它所在的函数在 if 检查之后中断并停止执行(这意味着 doSomething() 行永远不会执行):

function myFunction() {
    if(google === undefined) {
        alert("Google Maps didn't load!");
    }

    doSomething();
}

在 Safari 开发者工具中查看控制台时,我在这篇文章的标题中看到了错误。

这样检查 undefined variable 难道不应该是安全的吗?我想处理 Google Maps API 未加载的边缘情况,但如果我无法检查未定义,我该怎么做?我尝试只执行 if(!google),但结果相同。

当用户使用 map 导航到页面时,我还尝试使用 Google Loader 动态加载 map API,但我无法使其工作(Loader 也必须动态加载)为此,我似乎无法动态加载任何脚本)。我也尝试使用纯 Javascript 动态执行此操作,但我认为 Google Maps API Javascript 中的 document.write 打破了 Mobile Safari 上的这种情况。我还尝试使用 jQuery 的 $.getScript() 但没有成功。

无论如何,如果我可以检测到 map API 尚未加载,我应该能够处理这种边缘情况,所以这一切都归结为:如何才能做到这一点,以及为什么上面的方法不能做到这一点未定义的检查工作?

最佳答案

试试这个:

function myFunction() {
    if(window.google === undefined) {
        alert("Google Maps didn't load!");
    }

    doSomething();
}

这是因为 google 被解释为未声明的标识符,而 window.googlewindow 的一个属性,可能是 未定义或未定义。

编辑:

您还可以使用 !window.google,因为 google 是一个对象,因此不能为 nullundefined0 或其他虚假值。

关于javascript - "ReferenceError: Can' t 查找变量 : google"on checking for undefined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16860675/

相关文章:

javascript - Highcharts 饼图悬停时不透明度发生变化

ios - href=电话 :555 link not working in mobile safari

iphone - 从 mapView 检索当前用户位置,而 map 不在屏幕上

javascript - 删除复选框的属性 "checked"

javascript function rotate element => 尝试为传入的特定参数设置 IF 条件

javascript - 如何使用javascript隐藏和显示div onselect

iOS-Web服务: Webservice for iOS client

使用渐变作为自定义背景的 jQuery Mobile ListView

jquery - 在 jQuery Mobile 中创建选项卡

javascript - 使用 WebSQL。如何向现有表添加新列?