Игнорируем скролл в iframe Яндекс.Карт и Google Maps




Установили Яндекс.Карты на свой сайт? Использовали самую простую вставку — через iframe? При попадании мыши в данный фрейм (и при прокрутке с телефона) экран не будет прокручиваться как Вам хотелось бы. А будет меняться локация на карте. Яндекс уверяет, что исправить это невозможно, и рекомендует использовать JS API, что более сложно и не всегда целесообразно. Вот ответ из Яндекс.Блога от сотрудника Яндекса: «поведения Виджета Карт в iframe настраивать нельзя«. Кстати, при использовании JS API в мобильной версии скролл карты всё равно остаётся, даже несмотря на рекомендуемый параметр scroll=false, который нужно использовать в параметре запроса, ведь по факту данный параметр отключает масштабирование колесом мыши, а у мобильных нет мыши и для них нужно использовать API и отключать поведение multiTouch.

В итоге, поняв масштаб данной проблемы, я написал несложный скрипт, с помощью которого Вы сможете не бояться за прокрутку внутри iframe, ни в мобильной, ни в десктопной версии Вашего сайта. Скрипт подходит как для Яндекс.Карт, так и для Google Maps.

Итак, как запретить скролл в <iframe> Яндекс.Карт и у Google Maps аналогично

1) Первым делом давайте оформим наш тег <iframe> внутрь другого <div> с идентификатором wrapMap:

<div id="wrapMap">
    <iframe style="pointer-events: none;" src="ваш_src" width="100%" height="450" frameborder="0"></iframe>
</div>

В элемент <iframe> мы добавили инлайновый стиль с отключением кликов и прокрутки по карте (с помощью «pointer-events: none»). В данном случае это не является дурным тоном и необходимо для дальнейшей работы скрипта.

2) Затем давайте настроим активацию карты по клику на неё. Кстати, для удобства пользователей, давайте создадим интерактивную подсказку об этом и функционал для активации:

<script>
    // создаём элемент <div>, который будем перемещать вместе с указателем мыши пользователя
    var mapTitle = document.createElement('div'); mapTitle.className = 'mapTitle';
    // вписываем нужный нам текст внутрь элемента
    mapTitle.textContent = 'Для активации карты нажмите по ней';
    // добавляем элемент с подсказкой последним элементов внутрь нашего <div> с id wrapMap
    wrapMap.appendChild(mapTitle);
    // по клику на карту
    wrapMap.onclick = function() {
        // убираем атрибут "style", в котором прописано свойство "pointer-events"
        this.children[0].removeAttribute('style');
        // удаляем элемент с интерактивной подсказкой
        mapTitle.parentElement.removeChild(mapTitle);
    }
    // по движению мыши в области карты
    wrapMap.onmousemove = function(event) {
        // показываем подсказку
        mapTitle.style.display = 'block';
        // двигаем подсказку по области карты вместе с мышкой пользователя
        if(event.offsetY > 10) mapTitle.style.top = event.offsetY + 20 + 'px';
        if(event.offsetX > 10) mapTitle.style.left = event.offsetX + 20 + 'px';
    }
    // при уходе указателя мыши с области карты
    wrapMap.onmouseleave = function() {
        // прячем подсказку
        mapTitle.style.display = 'none';
    }
</script>

3) Добавим немного стилей для обёртки карты и интерактивного элемента подсказки:

<style>
#wrapMap {
    position: relative;
    cursor: help;
    overflow: hidden;
    border-width: 1px;
    border-style: solid;
    border-color: rgb(204, 204, 204);
    border-image: initial;
}
.mapTitle {
    position: absolute;
    z-index: 1000;
    box-shadow: rgba(0, 0, 0, 0.25) 0px 0px 5px;
    display: none;
    padding: 5px 20px;
    border-radius: 5px;
    background: rgb(255, 255, 255);
    border-width: 1px;
    border-style: solid;
    border-color: rgb(204, 204, 204);
    border-image: initial;
}
</style>
Источник: https://blog.lisogorsky.ru/ignor-scroll-iframe-maps

Последние статьи

Игнорируем скролл в iframe Яндекс.Карт и Google Maps

Установили Яндекс.Карты на свой сайт? Использовали самую простую вставку — через iframe? При попадании мыши в данный фрейм (и при прокрутке с телефона) экран не будет прокручиваться как Вам хотелось бы. А будет меняться локация на карте. Яндекс уверяет, что исправить это невозможно, и рекомендует использовать JS API, что более сложно и не всегда целесообразно. Вот ответ из Яндекс.Блога от сотрудника Яндекса: «поведения Виджета Карт в iframe настраивать нельзя». Кстати, при использовании JS API в мобильной версии скролл карты всё равно остаётся, даже несмотря на рекомендуемый…

Внедрение CMS для удобного управления контентом веб-сайта

Внедрение системы управления контентом (CMS) является неотъемлемой частью эффективного управления контентом веб-сайта. CMS позволяет легко создавать, редактировать и управлять контентом на сайте, обеспечивая максимальную гибкость и удобство использования. Используя современные CMS-платформы, мы гарантируем, что ваш веб-сайт будет эффективно организован и привлекательно представлен. Мы специализируемся на индивидуальной настройке CMS, что позволяет нам создать совершенно уникальные функциональные возможности, отвечающие вашим уникальным потребностям.

Разработка креативного сайта — от идеи до реализации

Создание креативного сайта — это важный шаг для любого бизнеса, ведь именно он является лицом компании в онлайн-мире. Заказывая креативный сайт, вы получаете не только привлекательный дизайн, но и эффективный инструмент для привлечения клиентов и увеличения продаж. Креативный сайт — это не просто набор страниц с информацией о компании и ее продукции. Это целое творческое решение, которое призвано удивить посетителей своей оригинальностью, функциональностью и уникальностью дизайна. Правильно созданный креативный сайт помогает подчеркнуть индивидуальность вашего…

Разработка сайта на WordPress по макетам Figma

Разработка сайта на платформе WordPress по макетам, созданным в программе Figma, является одним из наиболее популярных и востребованных направлений среди веб-разработчиков. WordPress предоставляет удобный интерфейс для создания, редактирования и управления сайтами, а Figma предоставляет возможность детально проработать дизайн и структуру страниц перед их реализацией. Основная задача при разработке сайта по макетам — подобрать оптимальное сочетание дизайна и функциональности, чтобы сайт как визуально, так и технически полностью соответствовал макетам. Создание сайта на WordPress начинается с …

Наши кейсы

За последнее время мы создали достаточно большое количество детально проработанных проектов от landing page до интернет-магазинов.

ritual-one.ru

Ритуальная служба №1 в Санкт-Петербурге

Подробнее

atropatena.ru

Консалтинговая компания «АТРОПАТЕНА»

Подробнее

valeriya-kuznetsova.ru

Личный сайт психолога/психотерапевта

Подробнее

Точка Доставки

Доставка с WILDBERRIES И OZON

Подробнее

startarget.pro

Разработка сайта Digital агенству startarget.pro

Подробнее

Интернет-магазин

Узнать больше

Корпоративный

Узнать больше

Понедельник - пятница :
с 09:00 до 20:00