Клуб API Карт

Деферед загрузка не всегда срабатывает

thekashey
15 января 2010, 16:16
Купил новый ноут, зашол на свой сайт и... нет карты после ф5 карта появилась Поставил оперу 10.10 - зашол на свой сайт.. нет карты, нажал ф5 - есть карта.. Сношу данные оперы - карта то есть то нет В ФФ\ИЕ карта есть почти всегда у всех пользователей у кого нет карты - нет и сессии, юзер агент - обычно фаерфокс.. Задумался, поставил на сайт логирование стейтов загрузки карты - через 10 секунд проверяем карту, если она признана не активной - сваливаем на сервер дамп переменых.. Получается не очень красиво - за 10 минут более 30 человек не смогли загрузить карту. в 95% случаях - яндекс карту тоесть у 5-10% посетителей нет карты. анализ логов выдал несколько мест сбоя, часть из их из-за тормознутых компов и каналов, но один место четко - самое популярное function SetYandexMaps() { StartMap_3on=3; YMaps.load(worker.SetYandexMaps); } вызов SetYandexMaps уже не производиться честно говоря не знаю как это отдебагить даже кто поможет?
9 комментариев
Подписаться на комментарии к посту
А UserAgent логируется? Если да, то в каких браузерах проблемы?

Далее, не подключается АПИ совсем или не вызывается callback? А запрос за АПИшными скриптами уходит? (тэг script создается в head?)
выставление переменой в стейт -4 первая строка вызываемой функции, так что нет, не вызывается

уходит ли апишний запрос не знаю, если раскажите в какую строну распарсивать head или на наличие каких обьектов смотреть - добавлю в дебаг

юзер агент в основном FF3.5.7, но есть и оперы и ИЕ

А FF 3.5.6, 3.0 - страдают? В head надо найти script с src="http://api-maps.yandex.ru/1.1.6/_YMaps.js?v=1". Если он есть, то запрос ушел. Кроме того, проверьте наличие, например, YMaps.Map - возможно, API прогрузилось, но не вызвался callback.
загрузка апи не произведена
нет ни тэга скрипт, ни YMaps.Map?
скрипт в head найден
Не могу воспроизвести Вашу проблему ни на своем, ни на соседних компьютерах. Могу только посоветовать поставить 5 секундный интервал, который а) проверяет наличие YMaps.Map б) если найдено, вызывает SetYandexMaps в) если не найдено, снова вызывает YMaps.load.
ура! наконец получилось стабильно получить багу.
вся проблема(опять) в том что сайт мой использует прототип.
Ключевая функция getElementsByClassName которую прототип ПЕРЕОПРЕДЕЛЯЕТ
в тоже время при YMaps.Load эта функция используется.

при этом в ее теле есть место var nodes = $(element).getElementsByTagName('*');

где $ есть яндексовый квери.
стабильно получилось в ИЕ8, в ФФ не стабильно, в чистой опере стабильно при первом посещении сайта.

В моем случае я просто стер данную функцию из прототипа.
Как вариант для дальнейшего копания - нельзя ли в пределах карт яндекса повесить jquery на другой символ?
> нельзя ли в пределах карт яндекса повесить jquery на другой символ?
Попробуем сделать в ближайших версиях.