Клуб API Карт

Ошибка инициализации карты в iframe в Firefox

Пост в архиве.

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

В firefox при изпользовании карты в iframe (связано с требованием разных версий js библиотек) возникает следующая ошибка при инициализации карт:
В https://api-maps.yandex.ru/2.1.48/combine.js инициализация переменной CopyrightsLayout проходит с ошибкой

TypeError: utilDomStyle.value(...) is null.

Код, вызывающий ошибку:            

utilDomStyle.patch(this._logoLinkElement, {
                printBackground: utilDomStyle.value(this._logoLinkElement, 'backgroundImage', true)
                    .replace(/^\s*url\(['"]?/, '').replace(/['"]?\)$/, '')
            });

Код инициализации карты:
  

  ymaps.ready(function () {
        

            axi_widget.geo.axiMap = new ymaps.Map("axi_widget", {
                center: [55.76, 37.64],
                zoom: 10,
                controls: ["zoomControl"]
            }, {
                searchControlNoCentering: true,
                searchControlResults: 1
            });
axi_widget.geo.axiMap.behaviors.disable('scrollZoom');
    });

Ошибка возникает не всегда, если принудительно обновить страницу (по ctrl shift r) то она отсутствует до следующей загрузки страницы. Также ошибка никогда не возникает в chrome.

К сожалению, эта ошибка появляется не всегда, плюс есть явная зависимость от родительского окна, из которого загружается страница (в пустой странице с вызовом iframe ошибка не воспроизводится). Т.к. в Chrome ошибка отсутствует, то думаю что код родительской страницы не влияет на появление ошибки.

6 комментариев
Георгий М.
4 марта 2017, 22:39
Также вопрос -может ли код родительского окна может влиять на появление такой ситуации?
Соберите, пожалуйста, минимальный пример, воспроизводящий проблему и выложите ссылку.
Можно использовать jsfiddle.net если нет своего сервера
Обновлено 5 марта 2017, 14:27
Георгий М.
7 марта 2017, 12:46
dimik,
я нашёл проблему - если в момент инициализации карты родительский div имеет стиль display:none, то в firefox возникает данная ошибка.

Пример - https://jsfiddle.net/gmelikov/8qr86e9n/1/

Метод воспроизведения:  загрузить страницу в firefox, в консоли браузера появится ошибка, при этом карта не инициализируется до конца.


В chrome данная ошибка отсутствует.
Обновлено 7 марта 2017, 12:47
Георгий М.
7 марта 2017, 17:00
Георгий М.,
По информации от тех. поддержки яндекс карт (спасибо вам!) это баг в firefox https://bugzilla.mozilla.org/show_bug.cgi?id=548397 . Ни Firefox, ни яндекс-карты в ближайшее время с этим ничего делать не будут, так что буду обходить проблему костылём.



Спасибо за помощь!
Удалённый пользователь
20 марта 2018, 14:46
Георгий М.,
, да, всё верно! Если у родительского display: none, то фрэйм при отображении элемента не работает... (((
Георгий М.
9 марта 2017, 10:27
Не смотря на то, что эта проблема вызвана поведением firefox, её учитывают многие, к примеру, https://github.com/Modernizr/Modernizr/pull/1443 . Было бы прекрасно увидеть решение и в ymaps!


Иначе есть единственный вариант обхода проблемы - в момент загрузки карты iframe и его родители не должны иметь в стилях display:none.