Клуб API Карт

Ошибка при совместной работе с RequireJS

vladimir.v.andreev
24 августа 2012, 15:22

Здравствуйте!

 

Используем RequireJS совместно с Яндекс.Картами.

 

Схема использования следующая: есть script-тег с атрибутом scr, указывающем на RequireJS и data-main, указывающем на наш JS-файл. В этом файле прописан конфиг с путями, там же подтягиваются необходимые зависимости.

Если в нем прописать require(['ymaps']), то грузится загрузчик Яндекс.Карт 2.0, затем он подтягивает оставшуюся часть Яндекс.Карт, но почему-то не вызываются обработчики, навешанные через ymaps.ready.

 

Если же сделать require(['ymaps']) в любом другом месте (например, консоли браузера) и затем добавить обработчик через ymaps.ready, то отрабатывает нормально.

 

Я смотрел минифицированный код загрузчика Яндекс.Карт, как мне кажется, это связано с проверкой document.readyState. При использовании тега script с указанным в нем путем к Яндекс.Картам, document.readyState == 'loading', при использовании консоли document.readyState == 'complete', а вот при использовании RequireJS и его способа загрузки (создании тега script налету) document.readyState == 'interactive'.

 

Я проверял только в хроме, в остальных браузерах еще не смотрел.

5 комментариев
Подписаться на комментарии к посту
Спасибо за ваше сообщение.
Мы знаем об этой ошибке, она должна починиться в ближайшем релизе.

Какие примерно сроки выхода релиза?

У меня похожая проблема с использованием $LAB

У меня похожая проблема, я использую curl.js (https://github.com/cujojs/curl)

При запросе: http://api-maps.yandex.ru/2.0.18/?load=package.standard,package.clusters&mode=release&lang=ru-RU возвращает код ответа 200, но ymaps.ready не выполняется.

Ещё некоторых случаях просто зависает( в отладчике пишет статус "pending")

это только загрузчик по этому урлу живет

само АПИ отдельно запрашивается из загрузчика