在iOS

时间:2015-07-20 08:06:30

标签: ios fine-uploader

我对上传者来说很新;我希望我的问题是相关的......

我试图为iPad和iPhone上的Web应用程序用户禁用相机(iOS),适用于Safari和Chrome。我已尝试设置选项camera: {ios: false},但相机选项仍显示在Safari和Chrome中。当我使用workarounds: { ios8BrowserCrash: true}时,相机选项确实在Chrome中消失,但仍在Safari中显示。我错过了什么?

我们正在使用fine-uploader 5.1.2,我简要地尝试了5.2.2,结果相同。该应用为HTML5JavascriptAngular,后端为Java。我在iPad上使用iOS 8.38.49 beta进行了测试。

另外,我试图禁用相机的原因是iOS在从相机加载图像时经常崩溃。我发现当从设备图像库加载时,绕过相机,应用程序崩溃的次数要少得多。这是iPad / iPhone的已知问题吗?

提前感谢您的帮助。

1 个答案:

答案 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。我希望这是有道理的......