Некоторая часть кода JavaScript заставляет Chrome зависать в Ios - PullRequest
5 голосов
/ 12 марта 2019

Я использую несколько очень простых html5 и js-кодов, чтобы сделать фотографию нажатием кнопки в мобильном браузере и отправить ее в веб-службу.Эта часть кода прекрасно работает в Safari в Ios (Ipad).Кроме того, код отлично работает в браузере Chrome для настольных компьютеров и в режиме «Мобильный рабочий стол».

В браузере Chrome для Ios;

  • Я делаю фотографии, которые работают (кнопка «Сделать фотографию»), и снимают фотографии и шоуСнимок сделан в поле ввода. Нет проблем.
  • Когда я нажимаю кнопку Сохранить фото, браузер Chrome зависает и не отвечает.
  • К сожалению, у меня нет устройства Android, чтобы проверить, работает ли эта частькода работает в Chrome в Android и не может отлаживать Chrome в Ios.

Это HTML-часть:

<tr id="photo-functions-row">
  <td></td>
  <td>
    <div style="max-width:30%">
      <label for="take-photo" class="custom-file-upload">
        <i class="fa fa-cloud-upload"></i> Take Photo
      </label>
      <input type="file" accept="image/*" capture="camera" id="take-photo" onchange="readURL(this);" />
      <button id="clear-photo" type="button" onclick="clearPhoto();" class="ui-btn ui-btn-inline" style="margin:5px;">Clear Photo</button>
      <button id="save-photo" type="button" onclick="savePhoto();" class="ui-btn ui-btn-inline" style="margin:5px;">Save Photo</button>
    </div>
  </td>
  <td> 
  </td>
</tr>

Это JS-часть:

function readURL(input) {
    if (input.files && input.files[0]) {
        var reader = new FileReader();
        reader.onload = function (e) {
            $('#img-placeholder')
                .attr('src', e.target.result);
        };
        reader.readAsDataURL(input.files[0]);
    }
}


function savePhoto() {
    let files = document.getElementById("take-photo").files;
    let reader = new FileReader();
    reader.readAsDataURL(files[0]);
    reader.onload = function (e) {
        let base64Image = e.target.result;
        console.log(base64Image);
        let params = [];
        let CalID = calItem.id;
        params[0] = CalID;
        params[1] = base64Image;
        sendPhoto(params);
    };
}



function sendPhoto(params) {
    var json = jQuery.post(savePhotoWebServiceAddress,
        {
            jsonData: JSON.stringify(params)
        }).done(function (data) {
            let photomessage = "";
            try {
                var obj = jQuery.parseJSON(data);
                if (obj != null) {
                    if (obj.success == true) {
                        photomessage = photoMessageSuccess;
                    }
                    else {
                        photomessage = photoMessageFailed;
                    }
                }             
            } catch (e) {
                photomessage = "An exception occured: " + e.message;
            }
            alert(photomessage);
            clearPhoto();
        });
}

В браузере Chrome на Ios должно быть что-то конкретное, вызывающее прерывание выполнения.

Ответы [ 2 ]

0 голосов
/ 25 марта 2019

Обнаружена проблема: chrome на ios блокирует сообщения с предупреждениями и выполнение скрипта останавливается при вызове первого предупреждения.Удалены оповещения, отлично работает.

0 голосов
/ 15 марта 2019

Все зависит от размера изображения, с которого вы снимаете, и от того, какое у вас поколение iPad. Какой у тебя вид? Это также зависит от вашего процессора / оперативной памяти. Даже если это от камеры, RAM играет огромную роль в этом. Кроме того, Google мог случайно создать ошибку, которая приводит к зависанию устройства iOS. Если что, зайдите на обновления для вашего iPad и iOS. Также вы можете попытаться включить обновление страницы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...