Ошибка в Firefox при работе с API Яндекс Карт

Рейтинг: 1Ответов: 1Опубликовано: 28.11.2014

Подключаю API карт Яндекса вот так:

<script src="//api-maps.yandex.ru/2.0/?load=package.standard&lang=ru-RU" type="text/javascript"></script>

Карту показываю по клику на ссылке (разворачивается блок).

$('#map-[[+id]]-link').on("click", function(){
      
    if(!$(this).hasClass('visible')){
          ymaps.ready(init);
            function init(){
                var myMap = new ymaps.Map ("map-[[+id]]", {
                    center: [[[+tv.coord]]],
                    zoom: 15,
                });
                var myPlacemark1 = new ymaps.Placemark([[[+tv.coord]]]);
                myMap.geoObjects.add(myPlacemark1);
            }
         $(this).addClass('visible');     
      }
    return false;
});

[[+tv.coord]] и т.п. - плейсхолдеры, которые заменяются в html конкретными значениями. Работает во всех браузерах, кроме Firefox. Последний выдает вот такую ошибку

ReferenceError: init is not defined ymaps.ready(init);

Хотя проверяю в консоли: объект ymaps существует.

В чем может быть проблема?

Благодарю.

Ответы

▲ 2

В общем, решил проблему сам.

Функцию нужно было описать перед вызовом.

if(!$(this).hasClass('visible')){
    function init(){
        var myMap = new ymaps.Map ("map-[[+id]]", {
             center: [[[+tv.coord]]],
             zoom: 15,
         });
         var myPlacemark1 = new ymaps.Placemark([[[+tv.coord]]]);
         myMap.geoObjects.add(myPlacemark1);
     }
      ymaps.ready(init);

     $(this).addClass('visible');     
   }

Буду очень признателен, если кто-нибудь объяснить, почему так. В памяти вплывает что-то про scope и локальный контекст, но почему тогда работает в остальных браузерах?