在Firefox中远程使用Google Maps V3时,"未定义谷歌"

Tra*_*Guy 53 javascript firefox google-maps cross-browser

这是我的难题:我有一个使用Google Maps V3和jQuery的页面.这一切都在FF5,Chrome和Safari本地运行良好.

一旦我上传到网站,我在第一行尝试使用谷歌对象时出现"谷歌未定义"错误

var defaultLocation = new google.maps.LatLng(lat, lng);
Run Code Online (Sandbox Code Playgroud)

它只发生在FF中,并且只发生在远程(即,如果我在本地将文件加载到FF中,它运行良好).Chrome和Safari似乎都很好用,就像我的Android和iPod浏览器一样.

这是我到目前为止所尝试的:

  1. 移至<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script><head>部分的顶部.
  2. 将所有内容移动$(function() {...});到被调用initialize()和添加的函数<body onload="initialize()">
  3. 玩过脚本和css文件的顺序
  4. 将网址http://maps.google.com/maps/api/js?sensor=false粘贴到FF地址框中并验证我已获得合法脚本

但由于这只发生在远程机器上的FF中并且运行良好,否则我认为它与我的代码没有任何关系.也许FF5中的加载顺序是拧紧的.也许它比其他浏览器更优先考虑网络资源.此时我真的不知道该怎么做.

任何帮助表示赞赏.
家伙

更新:
只是想添加以下事实:在Mac上尝试上一个之后,我在Windows中尝试了FF5,并且复制了完全相同的行为.
为了更好的衡量,我也尝试了Pale Moon - 结果相同.Chrome 14,Opera 11.50甚至frickin'IE9(未包含在测试计划中)都有效.它只是FF5,现在在Mac和Windows 7上,在该页面上失败.

小智 26

我好几次面对"谷歌没有定义".可能谷歌脚本有一些问题,不能很好地加载FF-addon BTW.FF具有重启选项(如窗口重启)帮助>重启,禁用加载项

  • AdBlock似乎也阻止了Google API. (2认同)

Die*_*ino 21

使用Gmap3时,我遇到了同样的错误"google未定义".问题是我在包含'google'之前加入'gmap3',所以我颠倒了顺序:

<script src="https://maps.googleapis.com/maps/api/js?sensor=false" type="text/javascript"></script>
<script src="/assets/gmap3.js?body=1" type="text/javascript"></script>
Run Code Online (Sandbox Code Playgroud)


Yan*_*bot 18

另一个帮助我的建议:

这是我发生的事情=>我的脚本在3次加载页面时工作一次,错误是"谷歌未定义".

我使用谷歌地图的功能是在我的jQuery文档的就绪功能中

$(function(){
   //Here was my logic
})
Run Code Online (Sandbox Code Playgroud)

我只是添加了这段代码以确保它有效:

$(function(){
   $(window).load(function(){
       //Here is my logic now
   });
});
Run Code Online (Sandbox Code Playgroud)

它就像一个魅力.如果你想了解有关文档就绪和窗口加载之间差异的更多细节,这里有一篇很棒的帖子: window.onload vs $(document).ready()

就绪事件发生在加载HTML文档之后,而onload事件发生在稍后,此时所有内容(例如图像)也已加载.

onload事件是DOM中的标准事件,而ready事件特定于jQuery.ready事件的目的是它应该在文档加载后尽早发生,以便为页面中的元素添加功能的代码不必等待加载所有内容.

  • 谷歌[这里](https://developers.google.com/maps/documentation/javascript/tutorial#Loading_the_Maps_API)有一个很好的例子。他们通过异步和回调解决了问题 (2认同)

Hri*_*ari 14

试试这个:

<script src="http://maps.googleapis.com/maps/api/js?sensor=false"></script> 
Run Code Online (Sandbox Code Playgroud)

  • 在您的页面上添加GMaps的新方法`<script src ="https://maps.googleapis.com/maps/api/js"async defer> </ script>`会导致问题,因为它的加载会延迟不要成为阻止资源.这有可能在GMaps初始化之前包含其他脚本.因此,上述解决方案是正确的.谢谢你. (3认同)

Muh*_*ani 7

而不是这个

var defaultLocation = new google.maps.LatLng(lat, lng);
Run Code Online (Sandbox Code Playgroud)

用这个

var defaultLocation = new window.google.maps.LatLng(lat, lng);
Run Code Online (Sandbox Code Playgroud)

这对我有用。


dan*_*pr4 6

试试这个:

<script src="https://maps.googleapis.com/maps/api/js"></script>
Run Code Online (Sandbox Code Playgroud)

它对我有用......重点是,将HTTP更改为HTTPS


小智 6

添加脚本的类型

<script src="https://maps.googleapis.com/maps/api/js" type="text/javascript"></script>
Run Code Online (Sandbox Code Playgroud)

因此,重要的部分是文本/ javascript类型。