首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在iOS的fine-uploader中关闭摄像头

在iOS的fine-uploader中关闭摄像头
EN

Stack Overflow用户
提问于 2015-07-20 16:06:30
回答 1查看 353关注 0票数 0

我是个新手,我希望我的问题是相关的……

我正在尝试在iPad和iPhone (iOS)上为我们的网络应用程序的用户禁用摄像头。我试着设置了camera: {ios: false}选项,但相机选项在Safari和Chrome中仍然显示。当我使用workarounds: { ios8BrowserCrash: true}时,摄像头选项在Chrome中消失了,但在Safari中仍然显示。我遗漏了什么?

我们使用的是fine-uploader 5.1.2,我简单地尝试了一下5.2.2,结果是一样的。该应用程序是HTML5JavascriptAngularJava后端。我已经在iPad上用iOS 8.38.49 beta进行了测试。

顺便说一句,我尝试禁用相机的原因是,当从相机加载图像时,iOS经常崩溃。我发现应用程序在从设备图像库加载时,绕过了摄像头,崩溃的情况要少得多。这是iPad/iPhone的已知问题吗?

提前感谢你的帮助。

EN

回答 1

Stack Overflow用户

发布于 2015-08-06 15:45:03

谢谢@Ray。作为参考,我现在使用最新的FineUploader version 5.3.0。正如您所建议的那样,将删除多个属性。我追踪到了下面的input.removeAttribute("multiple");代码(s3.fineUploader.js):

代码语言:javascript
复制
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");
        }
    }
},

尽管在我的代码(ios8BrowserCrash: true)中将options.ios8BrowserCrashWorkaround设置为true,但当在IPad/Safari上运行时,该程序仍然运行到removeAttribute("multiple")代码行。经过几次尝试和错误,我发现(可能...)库代码缺少对iPad (iOS 8.3)上的条件qq.iosSafari()的测试;qq.iosSafariWebView()测试不足以检测我的iPad上的Safari浏览器,因此缺少设置了multiple属性的代码。我发现我的调用代码中的以下选项值解决了这个问题。

代码语言:javascript
复制
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。我希望这是有意义的…

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31511524

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档