tulov / angular-yandex-map

AngularJS directive to work with Yandex maps
173 stars 57 forks source link

Гео объекты не отображаются в IE 10 #6

Closed OlexandrPopov closed 10 years ago

OlexandrPopov commented 10 years ago

Откройте демонстрационную страницу в IE 10(десктоп, метро или windows phone 8). Объекты отсутствуют. http://tulov-alex.ru/geoobjects/list-objects

Если поместить ya-geo-object в yaMap, то объекты отображаются. Если поместить в yaCollection, то не отображаются. http://popov.skyboxua.com/map/test.html

dvislov commented 10 years ago

+1 Такая же проблема

Если их поместить в кластер , тоже ничего не видно

c0rrupt commented 10 years ago

+1 так же в IE11

@OlexandrPopov @vdv73rus не решили проблему?

d-kazakov commented 10 years ago

замени в файле ya-map-2.1.js все вхождения tElement.html(''); на tElement.empty();

tulov commented 10 years ago

Попробовал "замени в файле ya-map-2.1.js все вхождения tElement.html(''); на tElement.empty();", но это приводит к тому что карты вообще перестают отображаться.

tulov commented 10 years ago

Проблема обусловлена тем, что tElement.children() в IE возвращает не то (всегда возвращает пустой массив), чего в других браузерах. В результате рвется цепочка и элементы не встраиваются. Есть у кого идеи, как это можно исправить?

OlexandrPopov commented 10 years ago

d-kazakov прав, нужно использовать tElement.empty(). Это связано с особенностями работы со свойством innerHTML в IE. Подробней можно прочитать здесь http://bugs.jquery.com/ticket/11473.

Попробовал "замени в файле ya-map-2.1.js все вхождения tElement.html(''); на tElement.empty();", но это приводит к тому что карты вообще перестают отображаться.

Потому что angular не поддерживает метод empty. Вместо него можно использовать

tElement.children().remove();

или

while(tElement[0].firstChild )
{
    tElement[0].removeChild(tElement[0].firstChild);
}
tulov commented 10 years ago

OlexandrPopov, спасибо за участие.

OlexandrPopov commented 10 years ago

Спасибо за модуль :)