2015-07-20 2 views
0

Я новичок в точной загрузке; Надеюсь, мой вопрос уместен ...Выключение камеры в режиме тонкой загрузки на iOS

Я пытаюсь отключить камеру для пользователей нашего веб-приложения только для iPad и iPhone (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 back-end. Я тестировал на iPad с iOS 8.3, 8.4 и 9 beta.

Как в стороне, причина, по которой я пытаюсь отключить камеру, связана с тем, что iOS часто сбой при загрузке изображения с камеры. Я обнаружил, что приложение загружается из библиотеки изображений устройства, что значительно меньше, минуя камеру. Это известная проблема с iPad/iPhone?

Заранее благодарим за помощь.

+0

Если атрибут 'multiple' не присутствует в элементе ввода файла, вы получите доступ к iOS-камере. Таким образом, я ожидаю, что есть некоторые настройки, которые приводят к тому, что Fine Uploader оставляет этот атрибут вне входного файла, который он создает и завершает. –

ответ

0

Thanks @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), программа все еще продолжается до removeAttribute("multiple") линии кода, когда работает на IPad/Safari. После нескольких попыток и ошибок я узнал, что (возможно ...) в библиотечном коде отсутствовало тестирование для условия qq.iosSafari() на iPad (iOS 8.3); тест qq.iosSafariWebView() недостаточен для обнаружения браузера Safari на моем iPad, поэтому отсутствует код, в котором установлен множественный атрибут. Я выяснил, что следующие значения параметров в моем кодовом коде были исправлены.

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 к ложному снова. Я надеюсь, что это имеет смысл ...

+0

Функция 'qq.iosSafariWebView()', похоже, работает должным образом. Он возвращает только «true», если страница запущена внутри «WebView». Ожидается, что «нормальный» мобильный браузер Safari не приведет к возврату возвращаемого значения. Мы не хотим применить этот обходной путь к «нормальному» Safari. Таким образом, код в Fine Uploader работает правильно. Какая бы проблема у вас ни была, вероятно, связана с некоторыми проблемами с вашей конфигурацией. –

Смежные вопросы