Я использую несколько очень простых 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 должно быть что-то конкретное, вызывающее прерывание выполнения.