选择要上传的文件会导致移动版 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 崩溃的主要内容,如果未能解决你的问题,请参考以下文章
为啥简单的网站会在移动设备上崩溃(至少是 iOS Safari 和 Chrome)?
Javascript .Focus 导致 safari 8.1.3 仅在 iPad 上崩溃