Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript IE8中的Google Maps API加载失败(“Google';未定义”)_Javascript_Google Maps_Internet Explorer 8_Google Maps Api 3_Google Api - Fatal编程技术网

Javascript IE8中的Google Maps API加载失败(“Google';未定义”)

Javascript IE8中的Google Maps API加载失败(“Google';未定义”),javascript,google-maps,internet-explorer-8,google-maps-api-3,google-api,Javascript,Google Maps,Internet Explorer 8,Google Maps Api 3,Google Api,当我加载一个脚本标签时,Chrome、Safari、Firefox和IE9中的一切都很好 但是,当我在兼容模式下查看IE9(或者,我被告知,在IE8)时,地图不会加载,控制台中会记录“google”未定义 以下是相关代码,其中一行触发错误,并用注释标识: <html> <head> <title>Test Map</title> <script type="application/javascript" src="http://maps.go

当我加载一个脚本标签时,Chrome、Safari、Firefox和IE9中的一切都很好

但是,当我在兼容模式下查看IE9(或者,我被告知,在IE8)时,地图不会加载,控制台中会记录“google”未定义

以下是相关代码,其中一行触发错误,并用注释标识:

<html>
<head>
<title>Test Map</title>
<script type="application/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script> 
</head>
<body>
<div id="map_canvas"></div>
<script type="text/javascript"> 
var lat=37.763154;
var lon=-122.457941;
var initialZoom=17;
var mapTypeId = 'Custom Map';
var mapStyle = [{featureType:"landscape", elementType:"all", stylers:[{hue:"#dae6c3"},{saturation:16},{lightness:-7}]}, 
                {featureType:"road", elementType:"geometry", stylers:[{hue:"#ffffff"},{saturation:-100},{lightness:100}]}];

//**The error is tripped in this next line, again only in IE9 compatibility mode or IE8*     
var styledMap = new google.maps.StyledMapType(mapStyle);

var mapType = new google.maps.ImageMapType({
    tileSize: new google.maps.Size(256,256),
    getTileUrl: function(coord,zoom) {
        return "img/tiles/"+zoom+"/"+coord.x+"/"+coord.y+".png";
    }
});
var map = new google.maps.Map(document.getElementById("map_canvas"), 
        {center:new google.maps.LatLng(lat,lon),
         mapTypeId:google.maps.MapTypeId.ROADMAP,
         zoom:initialZoom,
         mapTypeControl:false});
map.overlayMapTypes.insertAt(0, mapType);

map.mapTypes.set(mapTypeId, styledMap);
map.setMapTypeId(mapTypeId);
</script>
</body>
</html>

测试图
var lat=37.763154;
var-lon=-122.457941;
var=17;
var mapTypeId='自定义映射';
var mapStyle=[{featureType:“景观”,elementType:“所有”,样式:[{hue:{dae6c3},{saturation:16},{lightness:-7}]},
{featureType:“road”,elementType:“geometry”,样式:[{色调:{FFFFFFFF},{saturation:-100},{lightness:100}]}];
//**该错误在下一行中触发,同样仅在IE9兼容模式或IE8*下触发
var styledMap=new google.maps.StyledMapType(mapStyle);
var mapType=new google.maps.ImageMapType({
tileSize:new google.maps.Size(256256),
getTileUrl:函数(坐标、缩放){
返回“img/tiles/”+zoom+“/”+coord.x+“/”+coord.y+“.png”;
}
});
var map=new google.maps.map(document.getElementById(“map_canvas”),
{center:new google.maps.LatLng(lat,lon),
mapTypeId:google.maps.mapTypeId.ROADMAP,
缩放:初始化缩放,
mapTypeControl:false});
map.OverlyMapTypes.insertAt(0,mapType);
map.mapTypes.set(mapTypeId,styledMap);
map.setMapTypeId(mapTypeId);
因此,出于某种原因,并且仅在IE9+兼容模式和IE8中,指定的脚本标记不会在主体中后续嵌入脚本之前加载和/或执行


其他人能够复制吗?如何更正此问题?

IE正在下载,然后试图在本地计算机上执行JS,而其他浏览器只是将其作为文本文件打开。默认情况下,你可以在任何东西下载到的地方找到从IE下载的JS


编辑:根据更新,查看此小提琴以查看一种工作修复

确保IE未处于脱机模式。听起来浏览器没有连接到互联网。

问题显然在于IE8没有“应用程序/javascript”。我在
部分的
标记中将其更改为“text/javascript”,现在我的代码可以工作了。当然,如果我把它改回“application/javascript”,它就会停止工作。

我的google maps v3站点在IE 9兼容视图模式、IE 8和IE7下停止工作

原因:使用jQuery的java脚本中的错误仅在使用IEF12开发人员工具检查脚本时被捕获。这是令人不快的界线。错误是标记类中缺少单引号

$('<tr>', { 'class': country }).appendTo(tableSelector).append(h1).append(h2);
$('',{'class':country}).appendTo(表选择器).append(h1).append(h2);
起初,我追求一个虚假的线索,认为这是增加了一把钥匙=


教训是:使用工具、Firebug或IE工具或其他工具来检查您的javascript是否存在引入的问题。

一个猜测是,您的页面是通过https工作的,而来自Google的请求是http。 将Google请求转换为https,错误将消失。 这对我有用


请参阅:

绝对不是在脱机模式下,但这是一个很好的猜测。当我在IE9中关闭兼容模式时,它就工作了。打开它,没有地图,我会在控制台中看到“'google'未定义”。触发它的只是兼容性模式(或者,根据我的用户,使用IE8)。噢,我现在明白了。我觉得很傻。(显然,我不太使用IE。)好吧,这不是问题所在。我必须更新我的问题。@Trott:别担心,我得自己去找IE:)我不认为是你的错。它只是IE的兼容模式,阻止活动脚本。(可能……)