在iPhone 4S中拍照时Safari崩溃〔iOS 8.1〕



我正在使用以下代码来捕获照片和显示/存储。这个代码在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不尊重这一点。

最新更新