我对上传者来说很新;我希望我的问题是相关的......
我试图为iPad和iPhone上的Web应用程序用户禁用相机(iOS),适用于Safari和Chrome。我已尝试设置选项camera: {ios: false}
,但相机选项仍显示在Safari和Chrome中。当我使用workarounds: { ios8BrowserCrash: true}
时,相机选项确实在Chrome中消失,但仍在Safari中显示。我错过了什么?
我们正在使用fine-uploader 5.1.2
,我简要地尝试了5.2.2
,结果相同。该应用为HTML5
,Javascript
,Angular
,后端为Java
。我在iPad上使用iOS 8.3
,8.4
和9 beta
进行了测试。
另外,我试图禁用相机的原因是iOS在从相机加载图像时经常崩溃。我发现当从设备图像库加载时,绕过相机,应用程序崩溃的次数要少得多。这是iPad / iPhone的已知问题吗?
提前感谢您的帮助。
答案 0 :(得分:0)
谢谢@Ray。作为参考,我现在使用最新的FineUploader version 5.3.0
。
正如您所建议的那样,删除了多个属性。我将它追溯到下面的input.removeAttribute("multiple");
代码(s3.fine-uploader.js):
setMultiple: function(isMultiple, optInput) {
var input = optInput || this.getInput();
// Temporary workaround for bug in in iOS8 UIWebView that causes the browser to crash
// before the file chooser appears if the file input doesn't contain a multiple attribute.
// See #1283.
if (options.ios8BrowserCrashWorkaround && qq.ios8() && (qq.iosChrome() || qq.iosSafariWebView())) {
input.setAttribute("multiple", "");
}
else {
if (isMultiple) {
input.setAttribute("multiple", "");
}
else {
input.removeAttribute("multiple");
}
}
},
尽管我的代码(options.ios8BrowserCrashWorkaround
)中ios8BrowserCrash: true
设置为true,但在IPad / Safari上运行时,程序仍然会转到removeAttribute("multiple")
代码行。
经过多次尝试和错误后,我发现(可能......)库代码缺少对iPad上的条件qq.iosSafari()
的测试(iOS 8.3); qq.iosSafariWebView()
测试不足以检测iPad上的Safari浏览器,因此缺少设置multiple属性的代码。
我发现我的调用代码中的以下选项值修复了这个问题。
function initialiseS3() {
uploader = new qq.s3.FineUploader({
element: $element[0],
template: $(contents)[0],
debug: false,
// iosEmptyVideos workaround must be false to enable FineUploader to keep multiple:true in iOS
workarounds: {
iosEmptyVideos: false,
ios8BrowserCrash: true
},
// Must add the test qq.iosSafari() to set multiple to true and have the camera turned off on iPad
multiple: qq.ios8() && (qq.iosSafari() || qq.iosChrome() || qq.iosSafariWebView()) ? true : false,
camera: {
ios: false
},
… (more initialisations)
`
最后一个问题是覆盖变通方法选项iosEmptyVideos
的默认值,并将其设置为iosEmptyVideos: false
,以避免库再次强制multiple
为false。我希望这是有道理的......