选择要上传的文件会导致移动版 Safari 崩溃

Posted

技术标签:

【中文标题】选择要上传的文件会导致移动版 Safari 崩溃【英文标题】:Selecting a file to upload causes mobile Safari to crash 【发布时间】:2015-01-13 08:00:09 【问题描述】:

我在使用<input type="file"> 让用户上传图片时遇到了问题,至少是我的 iPhone 6 Plus。

<div class="add__from-camera">
    <button class="add__from-camera__btn">
        <i class="fa fa-fw fa-camera"></i> Add with Camera
    </button>
    <input class="add__from-camera__input" type="file">
</div>

这种休息情况会导致大约 50% 的时间选项卡崩溃,而在我的应用中大约有 90% 的时间。

当错误发生时,我很“幸运”让所有 Safari 崩溃,这是日志的一部分:

Exception Type:  EXC_BAD_ACCESS (SIGSEGV)
Exception Subtype: KERN_INVALID_ADDRESS at 0x00030000006467ba
Triggered by Thread:  0

Thread 0 name:  Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0   WebKit                          0x000000018a48566c WebKit::WebPageProxy::didChooseFilesForOpenPanelWithDisplayStringAndIcon(WTF::Vector<WTF::String, 0ul, WTF::CrashOnOverflow> const&, WTF::String const&, API::Data const*) + 44
1   WebKit                          0x000000018a461648 WebKit::WebOpenPanelResultListenerProxy::chooseFiles(API::Array*, API::String*, API::Data const*) + 100
2   WebKit                          0x000000018a461648 WebKit::WebOpenPanelResultListenerProxy::chooseFiles(API::Array*, API::String*, API::Data const*) + 100
3   WebKit                          0x000000018a413020 -[WKFileUploadPanel _chooseFiles:displayString:iconImage:] + 468

这似乎表明显示小缩略图预览时出现(溢出?)错误?有没有办法防止 Safari 在使用文件输入时崩溃,或者至少不呈现缩略图预览?

【问题讨论】:

我在 iPhone6 Plus 上观察到了同样的问题。您只需要演示它: 嘿,你有没有解决这个问题? @AlexFox 对不起,不。我们最终放弃了那个特定的应用程序(它只是一个原型),所以我们从未进一步调查。 使用较低分辨率的前置摄像头似乎可以解决这个问题,所以我认为这与文件大小有关,并且 safari 试图阻止你做一些愚蠢的事情(溢出保护)。 看起来这是一个已知问题。希望苹果能尽快把它整合起来。 linky 【参考方案1】:

试试这个:

<input class="add__from-camera__input" type="file" accept="image/*;capture=camera">

【讨论】:

以上是关于选择要上传的文件会导致移动版 Safari 崩溃的主要内容,如果未能解决你的问题,请参考以下文章

使用 Hammer.js 时移动 Safari 崩溃

动态更改视频标签源时移动 Safari 崩溃

为啥简单的网站会在移动设备上崩溃(至少是 iOS Safari 和 Chrome)?

Javascript .Focus 导致 safari 8.1.3 仅在 iPad 上崩溃

移动 Safari 中的 React PWA 图像上传会中断应用程序吗?

通过移动设备在 Android Studio 中单击 TextView 会导致应用程序崩溃 [关闭]