TL; DR
Мое веб-приложение HTML/CSS/JS отлично работает на всех моих устройствах Android и в браузере моего ноутбука, но не в Safari на iOS. Вместо этого карта не загружается, и прослушиватели кликов не применяются. Кажется, что Javascript загружается только частично, но это смешно.
Почему iOS Safari загружает только половину моего скрипта?
Убедитесь сами! Посмотрите демоверсию на моем сайте GitHub.
Я знаю, что это плохой вопрос по правилам сообщества, но я просто не знаю, какой вопрос задать. Никаких консольных ошибок, за которыми нужно следить, вообще никаких подсказок.
Фон
Я работаю над небольшим приложением, которое я называю Bike Share Explorer. Это веб-приложение, использующее Mapbox GL JS и Google MDL. Эта веб-карта позволяет людям исследовать системы проката велосипедов и доступность велосипедов в этих системах.
Кусочки
Я использую браузер, чтобы связать Mapbox GL JS и другой код, который мне нужен, с Javascript для моей страницы. Приложение создано для работы на сервере Express, а передняя часть написана с использованием Pug, но независимо от того, работаю ли я с Express или из файловой системы, на моем компьютере все работает отлично.
Что я пробовал
Основываясь на различных сообщениях и блогах SO, я...
- Убедитесь, что используется HTTP версии 1.1.
- Убедился, что мои заголовки содержат
Content-Type: text/html
- Настройте CORS на моем тестовом сервере с помощью cors (действительно, я перепробовал все, что мог придумать).
- Попытался обернуть тело в
<div onclick="void(0)">
(подробнее а>) - Попытался изменить курсор на указатель (сделано на элементе body)
- Пробовал использовать
touchstart
вместоclick
Я протестировал все эти методы с помощью BrowserSync на нескольких устройствах. Все работало нормально, кроме айфона.
Затем я приступил к небольшой отладке с помощью alert
, чтобы посмотреть, какой код на самом деле запускается. Исходя из этого, я могу сказать, что мой скрипт выполняется, и Mapbox GL JS говорит, что он поддерживается, но когда я помещаю alert
внутрь map.on("load", () => {});
, он никогда не запускается в iOS Safari. Если вы посетили сайт на другом устройстве, вы заметите, что он действительно срабатывает на нем.
Хотелось бы задать более конкретный вопрос, но нет.
Почему iOS Safari загружает только половину моего скрипта?