Хобрук: Ваш путь к мастерству в программировании

Прослушиватель Google Places place_changed не работает на iPhone

Я использую функцию автозаполнения Google Places.

Все отлично работает в любом браузере (IE, Chrome, Firefox, Safari Mac): я начинаю вводить название улицы, нажимаю на результат, список результатов закрывается и событие срабатывает.

Однако в Safari Mobile нажатие на результат закрывает список результатов, но событие никогда не срабатывает. Это на iPhone 4S, iOS 9, но у меня были подобные отчеты и от пользователей других моделей.

Мой код, который использует карту Google на той же странице, довольно стандартен:

<div id="map"></div>

<input type="text" name="location" id="location">

<script>
    function initMap() {
        map = new google.maps.Map(document.getElementById('map'), {
            // ...
        );

        var autocomplete = new google.maps.places.Autocomplete(
            document.getElementById('location'), {
                types: ['address'],
                componentRestrictions: {country: "re"}
            }
        );

        console.log('before listener');

        autocomplete.addListener('place_changed', function() {
            console.log('place changed');
        });

        console.log('after listener');
    }
</script>


<script src="//maps.google.com/maps/api/js?libraries=places&amp;callback=initMap&amp;language=fr-RE" async defer></script>

Я подключил iPhone к Mac, проверил веб-инспектор и не вижу ошибок. Я вижу в консоли зарегистрированные сообщения «до слушателя» и «после прослушивателя», поэтому слушатель, похоже, зарегистрирован. Но сообщение «место изменено» никогда не появляется при записи результата.

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


  • Я предлагаю вам предоставить быструю рабочую скрипку, чтобы ее можно было протестировать. Вы также проверили здесь для любой похожей проблемы, о которой уже сообщалось? (я не проверял) 20.01.2016

Ответы:


1

Пытаясь воспроизвести ошибку в скрипте, как было предложено MrUpsidown, я обнаружил, что это нерешенная проблема с fastclick.js.

Я отключил его на данный момент.

21.01.2016
Новые материалы

Основы принципов S.O.L.I.D, Javascript, Git и NoSQL
каковы принципы S.O.L.I.D? Принципы SOLID призваны помочь разработчикам создавать надежные, удобные в сопровождении приложения. мы видим пять ключевых принципов. Принципы SOLID были разработаны..

Как настроить Selenium в проекте Angular
Угловой | Селен Как настроить Selenium в проекте Angular Держите свое приложение Angular и тесты Selenium в одной рабочей области и запускайте их с помощью Mocha. В этой статье мы..

Аргументы прогрессивного улучшения почти всегда упускают суть
В наши дни в кругах веб-разработчиков много болтают о Progressive Enhancement — PE, но на самом деле почти все аргументы с обеих сторон упускают самую фундаментальную причину, по которой PE..

Введение в Джанго Фреймворк
Схема «работать умно, а не усердно» В этой и последующих статьях я познакомлю вас с тем, что такое фреймворк Django и как создать свое первое приложение с помощью простых и понятных шагов, а..

Настольный ПК как «одно кольцо, чтобы править всеми» домашних компьютеров
Вид после 9 месяцев использования С настольных компьютеров все началось, но в какой-то момент они стали «серверами», и мы все перешли на ноутбуки. В прошлом году я столкнулся с идеей настольных..

Расширенные методы безопасности для VueJS: реализация аутентификации без пароля
Руководство, которое поможет вам создавать безопасные приложения в долгосрочной перспективе Безопасность приложений часто упускается из виду в процессе разработки, потому что основная..

стройный-i18следующий
Представляем стройную оболочку для i18next. Эта библиотека, основанная на i18next, заключает экземпляр i18next в хранилище svelte и отслеживает события i18next, такие как languageChanged,..