javascript代码的某些部分使Ios中的chrome挂起

问题描述 投票:5回答:2

我正在使用一些非常简单的html5和js代码通过点击移动浏览器中的按钮拍照并将其发送到网络服务。这部分代码在Ios(Ipad)的Safari中完美运行。此外,代码在Chrome浏览器桌面和桌面移动模式下也能完美运行

在Ios上的Chrome浏览器中;

  • 我拍摄照片的部分(拍照片按钮)并拍照并显示在输入框上拍摄的照片还没有问题。
  • 当我单击“保存照片”按钮时,Chrome浏览器会挂起并且不响应。
  • 很遗憾,我没有Android设备来测试此部分代码是否适用于Android中的Chrome,并且无法在Ios上调试Chrome。

这是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();
        });
}

在Ios上的Chrome浏览器中应该有一些特定的中断执行。

javascript ios html5 google-chrome
2个回答
0
投票

这一切都取决于您正在拍摄的图像的大小,您正在使用的应用程序以及您拥有的iPad版本。你有什么样的?它还取决于您的CPU / RAM。即使它来自相机,RAM也会占据很大的比重。此外,谷歌可能不小心创建了一个让iOS设备挂起的错误。如果有的话,请检查iPad和iOS的更新。此外,您可以尝试启用页面刷新。


0
投票

发现问题,在调用第一个警报时,ios上的chrome阻止警报消息和脚本执行停止。删除警报,工作正常。

© www.soinside.com 2019 - 2024. All rights reserved.