Клуб API Карт

Internet Explorer 6 и API Яндекс карт. Ошибка: "предполагает наличие объекта"

mpetrushk
19 декабря 2009, 19:45

Код загрузки библиотеки:


Код вызова функции, инициализирующей яндекс-карты:
 


<script type="text/javascript">

var $from = 'Южнобутовская, 17';

var $to = 'Метро Фрунзенская';

  window.onload = function() {
    yamap_initialize($from, $to, '', true);
  };
</script>



Если удалить кеш и cookies ie6, то при первой загрузке страницы возникает ошибка: снимок экрана.
Ругается на строчку:
 
var router = new YMaps.Router(waypoints, [], {viewAutoApply: 1, avoidTrafficJams: ((traffic)?true:false)}); 
 
Утверждает, что YMaps не инициализирован и предполагает наличие объекта.
Причём, если после этого перегрузить страницу, то всё замечательно работает и грузится. Моё предположение - инициализация маршрутизатора происходит до того как загрузилась библиотека яндекс-карт. В случае же повторной загрузки страницы библиотека уже в кеше и грузится быстрее.
Во всех остальных браузерах работает идеально. 
Подскажите, пожалуйста, если я что-то делаю не так. Но мне кажется, что это баг.
8 комментариев
Подписаться на комментарии к посту
Сложно сказать в чем проблема. Но немного удивляет сам код. Сначала у вас запускается геокодирование, а затем по его завершению создается карта. Возможно если поменять местами куски кода, то все заработает. Еще как вариант можно поставить допольнительный обработчик, не на загрузку страницы, а на загрузку API: http://api.yandex.ru/maps/jsapi/doc/ref/reference/ymaps.xml#load Возможно 6-ой IE считает что страница загрузилась тогда когда загрузились все файлы, но не обрабатывает ситуацию что JavaScript может еще дополнительно что-то подгружать.
За ссылку спасибо.

Геокодирование не запускаюю. Запускаю маршрутизатор. По-моему всё в порядке. Порядок тут не должен играть роли. В любом случае он ругается на обращение к YMaps, что бы я там не вызвал, инициализацию карты или маршрута...
Прошу прощенья. Попутал... А вообще моя идея была о том что похоже что у вас API не успевает подгрузиться, а вы уже его используете. Правильно ли я понимаю что ошибка возникла после того как рабочей стала версия 1.1.6? Можете попробовать явно указать 1.1.5 и посмотреть появится ли ошибка?
К сожалению не смогли воспроизвести ошибку. Проблема еще актуальна?

Воспроизводится ли она на другом компьютере? Быть может это локальная проблема?
Нет, только что воспроизвёл её на другом компьютере.
Алгоритм следующий:
1) Запускаете IE6
2) Трёте кеш и cookies (в настройках IE)
3) Закрываете IE
4) Открываете IE
5) Проходите по ссылке

Ошибка на лицо.
Вы проверяете в нативном IE? Под виртуальной машиной? Multiply IE?
А также скажите полную версию IE6, пожалуйста.

По Вашему алгоритму не смог воспроизвести ошибку.
Нативного IE6 достать не смог. В обоих случаях Multiply IE. В одном случае под виртуальной машиной, во втором в рабочем Windows.
Я проверял на нативном IE6. Ошибки нет.

Multiply IE переодически глючит. Попробуйте на виртуальной машине только с одним IE. Готовые образы для VirtualPC можно достать здесь.