ReferenceError: Can't find variable: google"检查是否未定义
"ReferenceError: Can't find variable: google" on checking for undefined
我以为我已经很了解Javascript了,然后这个(看似基本的)东西弹出:
我有一个Phonegap/jQuery移动应用程序,使用谷歌地图。如果手机的互联网连接暂时不可用,并且在应用程序启动时试图加载谷歌地图API的确切时间,那么所有与地图相关的功能自然都无法工作。
然而,奇怪的是这段代码导致它所在的函数在if检查之后中断并停止执行(这意味着doSomething()
行永远不会执行):
function myFunction() {
if(google === undefined) {
alert("Google Maps didn't load!");
}
doSomething();
}
当在Safari的开发者工具中查看控制台时,我在这篇文章的标题中看到了错误。
不检查未定义的变量像这样应该是安全的吗?我想处理未加载谷歌地图API的边缘情况,但如果不能检查未定义,我该怎么做呢?我试着只做if(!google)
,但这给出了相同的结果。
我也尝试过使用谷歌加载器加载地图API动态当用户导航到使用地图的页面,但我还没有能够得到的工作(加载器将不得不动态加载以及这是有帮助的,我似乎无法动态加载任何脚本)。我也尝试过用纯Javascript动态地做这件事,但我认为谷歌地图API Javascript中的document.write
正在打破移动Safari。我也尝试使用jQuery的$.getScript()
没有成功。
在任何情况下,我应该能够处理这种边缘情况,如果我能检测到地图API还没有加载,所以这一切归结为:这是如何做到的,为什么上面的未定义检查不起作用?
试试这个:
function myFunction() {
if(window.google === undefined) {
alert("Google Maps didn't load!");
}
doSomething();
}
这是因为google
被解释为一个未声明的标识符,而window.google
是window
的一个属性,可能是undefined
,也可能不是。
编辑:
您也可以使用!window.google
,因为google
是一个对象,因此不能是null
, undefined
, 0
或其他假值。
- 为什么不't Javascript对我的输入值进行了一些重新检查
- 在单击任何位置时隐藏元素,而不检查每次DOM单击
- 如何检查管道中未定义的项目
- 主干-不管怎样,检查事件以前是否绑定过
- 使用javascript检查多个输入值,并在1次检查中标记多个输入框
- 递归使用 eval() 是检查程序执行的好方法吗?
- 我怎么能"“检查/取消检查”;节点”;“子/父”;独立于JSTree
- 如何检查“;文件打开"窗口是用javascript打开的
- 检查字符串是否只包含“0”-"什么都没有
- 如何检查带有href="某事“;与Jquery有一定的类
- "全部检查”;不选中复选框
- 需要HTML表单检查=“"在onclick=“;window.print()”;
- 检查“/"在URL上使用jQuery
- 如何检查电子邮件是否发送成功?(我使用了<a href="mailto).我们可以使用javascrip
- 我可以检查onclick="使用jquery
- Javascript:如何检查一个元素是否是"显示”;在屏幕上
- 检查“”中是否存在属性;窗口“;如果“;窗口"未准备好
- 使用“^"以检查字符串是否以另一个字符串开头
- jQuery"意外的标识符“;使用ajax表单检查
- 如何使用“Google Sign In"”检查用户是否登录;(OAuth 2.0)