Клуб API Карт

Проблема при асинхронной загрузки карты

weberdever
18 июля 2012, 11:08

Добрый день. 

Проблема в след. при подключении карты таким образом: 

<script defer="defer" async="async" language="JavaScript" type="text/javascript" src="http://api-maps.yandex.ru/2.0/?load=package.full&mode=debug&lang=ru-RU"></script>

В chromium 17.0.963.1 и chrome 20.0.1132.57 возникает след. проблема: когда происходит выполнение функции init в загрузчике, состояние document.readyState == "interactive" соответственно domReady == false, но события DOMContentLoaded и onload не наступают, точнее наступают, но не всегда. Если строку номер 1733

domReady = document.readyState == "complete",

заменить на такую 

domReady = document.readyState == "complete" || document.readyState == "interactive",

 То все будет хорошо

6 комментариев
Подписаться на комментарии к посту
Спасибо за информацию. Обязательно проверим.

На самом деле бага на карте другая - если ровно по наступлению domready начать загружать карты - вот тогда будут проблемы с загрузкой.

Потому что domready уже наступил, а страница все еще что-то грузит(interactive)
async тут не причом.

Незнаю, сейчас переписываю функционал эелемента с API 1.* на 2.*, у меня все нормально пока. Взял скрипт загрузчика поправил описанный выше код и пока работает. Как воспроизвести баг? 

так все в порядке, или есть проблемы с .ready?

Если сделать то что я писал выше, то все работает нормально. Без этой правки через раз срабатывает ready

Подтверждаю наличие этой проблемы с ready() не только в Хроме, но и в других браузерах. Сталкивался уже много раз с ней.

В качестве обходного манёвра на данном этапе рекомендую использовать параметр onload в загрузчике. Надеюсь метод ready() когда-нибудь исправят и не нужно будет таких вот «танцев».