Сбой загрузки API Карт Google («‘google’ не определен») в IE8

#javascript #google-maps #internet-explorer-8 #google-maps-api-3 #google-api

#javascript #google-карты #internet-explorer-8 #google-maps-api-3 #google-api

Вопрос:

Когда я загружаю http://maps.google.com/maps/api/js?sensor=false в теге script у меня все работает нормально в 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, тег script, указывающий http://maps.google.com/maps/api/js?sensor=false не загружается и / или не выполняется до последующего встроенного скрипта в теле.

Могут ли другие копировать? Как мне исправить эту проблему?

Комментарии:

1. Я не думаю, что это ваша вина. Это просто режим совместимости IE, который блокирует активные скрипты. (вероятно …)

Ответ №1:

Проблема, по-видимому, в том, что IE 8 не запускает «application / javascript». Я изменил его на «text / javascript» в <script> теге в <head> разделе, и теперь мой код работает. И, конечно, если я изменю его обратно на «application / javascript», то он перестанет работать.

Ответ №2:

Можно предположить, что ваша страница работает по протоколу https, в то время как запрос от Google — http. преобразуйте запрос Google в https, и ошибка исчезнет. у меня это сработало.

Смотрите: Возможное решение

Ответ №3:

Мой сайт Google Maps v3 перестал работать в режиме просмотра совместимости с IE 9, IE 8 и IE7.

Причина: Ошибка в java-скрипте с использованием jQuery обнаруживается только при использовании инструментов разработчика IE F12 для проверки скрипта. Вот строка, которая нарушает. Ошибка заключалась в отсутствии одинарных кавычек в токене, class.

 $('<tr>', { 'class': country }).appendTo(tableSelector).append(h1).append(h2);
  

Сначала я преследовал ложную зацепку, думая, что это добавление ключа =
http://maps.googleapis.com/maps/api/js?key=MY_KEY_FROM_API_CONSOLEamp;sensor=false

Урок таков: используйте инструменты, Firebug или IE tools или что-то еще, чтобы проверить ваш javascript на наличие проблем.

Ответ №4:

Убедитесь, что IE не находится в автономном режиме. Похоже, браузер не подключается к Интернету.

Комментарии:

1. Определенно не в автономном режиме, но это хорошее предположение. Когда я отключаю режим совместимости в IE9, это работает. Включаю его, карты нет, и я получаю «‘google’ не определен» в консоли. Это просто режим совместимости (или, по словам моего пользователя, использование IE8), который запускает его.

Ответ №5:

IE загружает, а затем пытается выполнить JS на вашем локальном компьютере, в то время как другие браузеры просто открывают его как текстовый файл. Вы можете найти загруженный JS из IE везде, куда загружается материал по умолчанию.

РЕДАКТИРОВАТЬ: В свете обновлений ознакомьтесь с этой скрипкой, чтобы увидеть своего рода рабочее исправление. http://jsfiddle.net/h6rc3 /

Комментарии:

1. Уф, теперь я понимаю. Я чувствую себя глупо. (Очевидно, я не часто использую IE.) Хорошо, значит, проблема не в этом. Мне придется обновить свой вопрос.

2. @Trott: Не беспокойтесь, мне пришлось самому искать IE 🙂