IE8中的Google Maps API加载失败“\'google\'未定义”

问题描述

| 当我在脚本标签中加载http://maps.google.com/maps/api/js?sensor=false时,在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>
因此,出于某种原因,并且仅在IE9 + compatibility-mode和IE8中,指定http://maps.google.com/maps/api/js?sensor=false的脚本标记之前不会加载和/或执行正文中的后续嵌入式脚本。 其他人能够复制吗?我该如何解决这个问题?     

解决方法

        问题显然是IE 8无法读取“ application / javascript \”。我在
<head>
部分的
<script>
标记中将其更改为\“ text / javascript \”,现在我的代码可以工作了。而且,当然,如果我将其更改回\“ application / javascript \”,则它将停止工作。     ,        一种猜测是,您的页面在https上工作,而Google的请求是http。 将Google请求转换为https,错误将消失。 这对我有用。 请参阅:可能的解决方案     ,        我的Google Maps v3网站停止在IE 9兼容性视图模式,IE 8和IE7中工作。 原因:仅当使用IE F12开发人员工具检查脚本时,才捕获使用jQuery的Java脚本错误。这是违规行。错误缺少令牌类的单引号。
$(\'<tr>\',{ \'class\': country }).appendTo(tableSelector).append(h1).append(h2);
起初,我追求错误的领导方式,认为这是添加了密钥= http://maps.googleapis.com/maps/api/js?key=MY_KEY_FROM_API_CONSOLE&sensor=false 课程是:使用工具,Firebug或IE工具或其他工具检查您的JavaScript是否存在引入的问题。     ,        确保IE不在离线模式下。听起来浏览器没有连接到互联网。     ,        IE正在下载,然后尝试在本地计算机上执行JS,而其他浏览器只是将其作为文本文件打开。您可以在默认情况下从IE的任何位置找到从IE下载的JS。 编辑:根据更新,请参阅此小提琴以查看某种工作修补程序。 http://jsfiddle.net/h6rc3/