#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 🙂