我正在使用以下代码捕获照片和显示/存储。这个相同的代码在iPhone 5和iOS 7.1.2中运行良好,但是在带有iOS 8.1 safari的iPhone 4S中,每次拍照时都会崩溃。
<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>
Demo
拍照后在safari中显示消息
此网页出现问题,因此重新加载
更新 现在我在相同的设备上执行相同的任务,但使用iOS版本8.1.2。仍然出现同样的问题
答案 0 :(得分:1)
虽然8.1更新将其修复在较新的设备上,但在旧设备(首先是iPad,iPad Mini,iPhone 4S)上仍存在问题。 iOS 8.2没有做得更好。但是,随着昨天发布的8.3,问题得到了解决。在8.3更新之前,我使用iOS 8.2进行了检查,并且每个图片都在崩溃之前。有时在相机模式下,有时在拍摄照片后。希望这个问题现在也可以解决。
对于其他设备,出厂恢复确实解决了问题,但也删除了任何应用,设置和数据。不是真的要走的路。
我用于测试的代码可以在这个小提琴中找到: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
}
答案 1 :(得分:0)
这是一个似乎在iOS 8.1.2和8.1.3中发生的错误。我能够在多个场景中重现该问题,而我正在向Apple提交错误。
可能的解决方法: 允许用户通过设置
选择多个文件<input type="file" name="img" multiple>
这会禁用&#34;拍照&#34;选项,但您必须支持多个文件上传。
在其他浏览器上,设置capture
属性可以更好地控制是否允许用户在文件选择中拍照,但根据how to disable capture when upload image file (using safari on ipad) ,它不是受到移动游猎的尊重。