Автономное приложение iOS 300 мс

В прошлом году webkit удалил задержку 350 мс для iOS . Когда я запускаю свой сайт в мобильном браузере Safari, задержки больше не существует и работает так, как ожидалось.

Однако, когда я запускаю свое веб-приложение в автономном режиме , задержка существует и явно очевидна.

Вот мой метатаг, который я использую:

<meta name="viewport" content="initial-scale=1.0, user-scalable=no, maximum-scale=1, width=device-width"> 

Я пробовал варианты такого рода, без везения.

Трудно найти что-либо об автономных приложениях, тем не менее, это очевидная проблема.

Кто-нибудь знает, почему этот 350-миллисекундный щелчок задерживается только в автономном режиме? Как обходной путь, мне нужно принести fastclick в проект, что не идеально.

Примечание. Я запускаю iOS 9.3.5 / iPhone 6

Кажется, что нет обходного пути, и это, похоже, известная проблема, независимо от того, исправлена ​​ли в webkit.

Начать Rant

Яблоки не поддерживают, и внимание к деталям для автономных приложений поистине невероятно; особенно с версии 9.3.5.

Между этой проблемой и основной проблемой игрока Youtube для автономных приложений. Возможно, Apple должна перестать беспокоиться об удалении разъема для наушников и добавить какую-то мистическую «сенсорную панель» и на самом деле исправить свою проклятую платформу.

End Rant

Для решения проблемы вам придется использовать FastClick . Примените его только к iOS. Вы можете пойти дальше и применять его только к автономным приложениям, так как он отлично работает, если приложение не находится в автономном режиме.

Мой тег скрипта помещается после DOM, и инициализация выглядит следующим образом:

  if (isIos() && isRunningStandalone()) { // Initialize Fast Click // Even with the latest webkit updates, unfortunatley iOS standalone apps still have the 350ms click delay, // so we need to bring in fastclick to alleviate this. // See https://stackoverflow.com/questions/39951945/ios-standalone-app-300ms-click-delay if ('addEventListener' in document) { document.addEventListener('DOMContentLoaded', function () { FastClick.attach(document.body); }, false); } } isIos = function () { // Reference: https://stackoverflow.com/questions/9038625/detect-if-device-is-ios#answer-9039885 return /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream; }; isRunningStandalone = function () { // Bullet proof way to check if iOS standalone var isRunningiOSStandalone = window.navigator.standalone; // Reliable way (in newer browsers) to check if Android standalone. // https://stackoverflow.com/questions/21125337/how-to-detect-if-web-app-running-standalone-on-chrome-mobile#answer-34516083 var isRunningAndroidStandalone = window.matchMedia('(display-mode: standalone)').matches; return isRunningiOSStandalone || isRunningAndroidStandalone; }; 

Кажется, что запускает другой экземпляр браузера, когда вы запускаете его в автономном режиме, возможно, в более старой версии. Неизвестно, исправлено или не ожидается, либо я боюсь.

В качестве обходного пути вы можете попробовать, если ontouchend может работать для вашего дела

  • iOS 11 Модифицированная текстовая область загрузки Safari вне курсора
  • Открытие приложений и закрытие вкладок Safari в iOS
  • iOS 8 удалил свойство «minimum-ui» viewport, существуют ли другие «мягкие полноэкранные» решения?
  • Сайт «apple-mobile-web-app-able» переключается на Mobile Safari после выхода из системы
  • Использование технологии apple-mobile-web-app отключает данные: uri на iOS?
  • iOS Safari Mobile отключает предыдущий и следующий для выбора ввода
  • откройте приложение iphone из ссылки в веб-приложении в сафари
  • Двойной щелчок на div с содержимым внутри и iframe отключает div
  • Проблемы с дизайном Mobile Safari / iPhone Mail.app: предотвращение автозапуска и стилизации авто-ссылок (даты, адреса и т. Д.).
  • Установите ширину собственных наборов даты и времени html5 на устройствах iOS.
  • iOS7 Safari: нажатие на фиксированную позиционную панель заголовка с более высоким z-index триггером обработчика события элемента под ним
  • Давайте будем гением компьютера.