Подтвердить что ты не робот

Сбой Safari при съемке в iPhone 4S [iOS 8.1]

Я использую следующий код для захвата фотографии и отображения/сохранения. Этот же самый код, работающий отлично в iPhone 5 с iOS 7.1.2, но в iPhone 4S с iOS 8.1 сафари будет сбой каждый раз, когда я фотографирую.

<body>
    <img id="uploadPreview" style="width: 100px; height: 100px;">
    <input id="uploadImage" type="file" name="myPhoto" onchange="PreviewImage();">
    <script type="text/javascript">
        function PreviewImage() {
            var oFReader = new FileReader();
            oFReader.readAsDataURL(document.getElementById("uploadImage").files[0]);
            oFReader.onload = function (oFREvent) {
                document.getElementById("uploadPreview").src = oFREvent.target.result;
            };
        };
    </script>
</body>

Демо-версия
Следующее сообщение появится в сафари после фото

Проблема возникла с этой веб-страницей, поэтому она была перезагружена

Обновление Теперь я выполняю ту же задачу на одном устройстве, но с iOS версии 8.1.2. Еще одна проблема возникла

4b9b3361

Ответ 1

Хотя обновление 8.1 фиксировало его на новых устройствах, на старых устройствах (первый iPad, iPad Mini, iPhone 4S) проблема все еще существовала. iOS 8.2 не улучшил работу. Однако с выпуском вчера 8 июля проблема была решена. До обновления 8.3 я проверил с iOS 8.2 и с каждым сбоем сафари изображения. Иногда в режиме камеры иногда после съемки. Надеемся, что теперь проблема решена и для других.

Для других устройств восстановление factory устранило проблему, но также удалило любое приложение, настройки и данные. Не совсем так.

Код, который я использовал для тестирования, можно найти в этой скрипте: http://jsfiddle.net/d6nwubx3/6/

var inputComponent = document.getElementById('fileuploader');
inputComponent.addEventListener('change',handleFileSelect, false);
function handleFileSelect( event ) { 
    var image = event.target.files[0];
    // Do something with image
}

Ответ 2

Это ошибка, которая, как представляется, происходит в iOS 8.1.2 и 8.1.3. Я смог воспроизвести эту проблему в нескольких сценариях, и я в процессе подачи ошибки с Apple.

Возможное обходное решение: Позвольте пользователю выбрать несколько файлов, установив

<input type="file" name="img" multiple>

Это отключает параметр "Сделать фото", но вы должны поддерживать несколько загрузок файлов.

В других браузерах установка атрибута capture позволяет более точно контролировать, разрешено ли пользователю делать фотографии как часть выбора файла, но согласно как отключить захват при загрузке файла изображения (с использованием Safari на ipad), это не соблюдается с помощью мобильного сафари.