Как не инициализировать карту ymaps.ready, если сервисы яндекса не доступны

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

Есть классический код типа

   $(document).ready(function () {
      ymaps.ready(function () {
        map = ymapCreate('map');
        ymapClear(map);
        ...
        ymapFitObjectsIntoMap(map);
      });
   }

и есть подключаемый скрипт

<script defer src="//api-maps.yandex.ru/2.1/?apikey=<...>&lang=ru-RU"></script>

Все работает отлично. Однако вчера вырубили инет и при тесте в локальной сети получилось, что скрипт яндекса не доступен. В результате ymaps не инициализировался и все, что было после упало с классическим сообщением ymaps is undefined. Попытки обернуть ymasp.ready в условие типа if (ymaps) или if (ymaps !== undefined) провалились. ympas начинает существовать только после загрузки яндекс-скрипта. Оно бы может и фиг бы с ним, но чисто гипотетически сервисы яндекса могут упасть, стало быть отгниет и мой сайт, а надо, чтобы жил без карты.

Нагуглил здесь же предложение использовать window.ymaps. С ним получилось обернуть в такой код

   $(document).ready(function () {
    if (window.ymaps) {
      ymaps.ready(function () {
        map = ymapCreate('map');
        ymapClear(map);
        ...
        ymapFitObjectsIntoMap(map);
      });
    }
  }

С ним все заработало как задумано. Т.е. при имитации недоступности сервисов яндекса, карта не инициализируется, другие скрипты на странице не падают и все работает без карты.

Вопрос: а правильно ли я сделал или может есть какие-то более умные способы? А то из меня джаваскриптер тот еще...

Ответы

Ответов пока нет.