当我在脚本代码中加载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 +兼容模式和IE8中,指定http://maps.google.com/maps/api/js?sensor=false的脚本标记未在正文中的后续嵌入脚本之前加载和/或执行。
其他人是否可以复制?我该如何解决这个问题?
答案 0 :(得分:3)
问题显然是IE 8没有“应用程序/ javascript”。我在<script>
部分的<head>
标记中将其更改为“text / javascript”,现在我的代码正常运行。当然,如果我将其更改回“application / javascript”,那么它就会停止工作。
答案 1 :(得分:2)
我的谷歌地图v3网站在IE 9兼容性视图模式,IE 8和IE7中停止工作。
原因:在使用IE F12 Developer工具检查脚本时,仅使用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以了解引入的问题。
答案 2 :(得分:2)
有一种猜测是,当Google的请求为http时,您的网页可以使用https。 将Google请求转换为https,错误就会消失。 这对我有用。
答案 3 :(得分:1)
IE正在下载然后尝试在本地计算机上执行JS,而其他浏览器只是将其作为文本文件打开。默认情况下,您可以在IE下载的地方找到下载的JS。
编辑:根据更新,请看这个小提琴,看看有多种工作方法。 http://jsfiddle.net/h6rc3/
答案 4 :(得分:1)
确保IE未处于离线模式。听起来好像浏览器没有连接到互联网。