Google-Maps-API laden-Fehler ("'google' ist nicht definiert") im IE8
Wenn ich es lade http://maps.google.com/maps/api/js?sensor=false in einem script-tag, alles funktioniert gut für mich in Chrome, Safari, Firefox und IE9.
Allerdings, wenn ich mir im IE9 im Kompatibilitätsmodus (oder, wie mir gesagt wurde, in IE8) die Karte wird nicht geladen, und "'google' ist nicht definiert" wird protokolliert, in der Konsole.
Hier ist der relevante code mit der Zeile, ist die Auslösung der Fehler identifiziert, die mit einem Kommentar:
<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>
So, für einige Grund, und nur in IE9+Kompatibilität-Modus und den IE8, das script-tag angeben http://maps.google.com/maps/api/js?sensor=false nicht laden und/oder ausführen, bevor Sie die nachfolgenden eingebetteten Skript in den Körper.
Sind andere in der Lage zu replizieren? Wie kann ich dieses problem beheben?
- Was sehen Sie in den Fiddler?
- Ich dont denke, es ist deine Schuld. Seine nur des IE-Kompatibilitäts-Modus die Blockierung von aktiven scripts. (wahrscheinlich...)
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das problem, ist anscheinend, dass der IE 8 nicht Begriffen "application/javascript". Ich geändert es zu "text/javascript" in der
<script>
tag in der<head>
Abschnitt und jetzt ist mein code funktioniert. Und, natürlich, wenn ich es wieder ändern auf "application/javascript", dann Stoppt es zu arbeiten.Eine Vermutung ist, dass Sie Seite funktioniert über https, während der Wunsch von Google ist http.
konvertieren Sie die Google-Anfrage auf https und der Fehler wird verschwinden.
dieser arbeitete für mich.
Finden Sie unter : Mögliche Lösung
Meine google-maps-v3-site aufgehört zu arbeiten in Internet Explorer 9-Kompatibilitätsansicht-Modus, IE 8 und IE7.
Grund: Fehler im java-script mit jQuery nur dann verfangen, wenn Sie mit dem IE-Entwicklertools (F12) zu untersuchen das Skript. Hier ist die betreffende Zeile. Der Fehler war fehlende Anführungszeichen aus dem token, Klasse.
Zunächst verfolgte ich ein false lead, dachte, es war die Zugabe eines key=
http://maps.googleapis.com/maps/api/js?key=MY_KEY_FROM_API_CONSOLE&sensor=false
Die Lektion ist: verwenden Sie tools, Firebug oder IE-tools oder was auch immer, überprüfen Sie Ihre javascript für eingebrachte Fragen.
Stellen Sie sicher, dass der IE nicht im offline-Modus. Klingt wie der browser nicht den internet-Anschluss.
IE herunterladen, dann versuchen, führen Sie die JS auf Ihrem lokalen Computer, während die andere Browser einfach öffnen, es als text-Datei. Finden Sie die heruntergeladene JS IE wo Sachen downloads zu standardmäßig.
EDIT: Im Licht des updates finden Sie in diesem Fiddle zu sehen, eine Art-arbeiten zu beheben. http://jsfiddle.net/h6rc3/