Я сузил свою проблему до использования библиотеки Fastclick; когда я удалил его из своей кодовой базы, мои проблемы исчезли, что говорит мне о том, что нет собственной проблемы iOS / FF, как предлагают другие ответы здесь.
Не зная библиотек, которые используют другие люди, но зная, что Fastclick является исключительно распространенным явлением, могу ли я предположить, что основной причиной этой ошибки на самом деле является проблема с библиотекой, а не та, которая сохранилась за годы выпуска Apple! Это кажется более вероятным. Может быть, другие здесь могут пролить свет на то, используют ли они Fastclick?
Подробнее
Некоторые браузеры предотвращают запуск файлового ввода клиентским кодом в качестве меры безопасности. Попробуйте вызвать событие click из консоли с помощью document.querySelector('input[type=file]').click()
, и оно сработает, сделайте то же самое с вашим кодом, и оно загадочным образом завершится неудачей.
Я предполагаю, что причина этой ошибки в том, что Fastclick применяет обработчик ontouchstart
к <label />
. Когда оно запускается на сенсорном устройстве, библиотека передает это событие в обработчик onclick
или, в этом случае, в встроенную функцию <label />
. К сожалению, это означает, что клиентский код вызывает открытие ввода файла и блокируется браузером.