我正在使用以下代码来捕获照片和显示/存储。这个代码在iOS 7.1.2的iPhone 5中运行良好,但在iOS 8.1的iPhone 4S中,每次拍照时safari都会崩溃。
<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版本。仍然出现同样的问题
尽管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
}
这是一个在iOS 8.1.2和8.1.3中出现的错误。我能够在多个场景中重现这个问题,我正在向苹果公司提交一个错误。
可能的解决方案:允许用户通过设置选择多个文件
<input type="file" name="img" multiple>
这将禁用"拍照"选项,但您必须支持多个文件上传。
在其他浏览器上,设置capture
属性可以更好地控制是否允许用户在文件选择中拍照,但根据上传图像文件时如何禁用捕获(在ipad上使用safari),移动safari不尊重这一点。