У меня есть вопрос о <input type=file>
HTML-элемент - в частности, почему все признаки указывают на то, что он поддерживается на Windows Phone 8 (IE 10 Mobile), но это действительно не так. Работа.Обнаружение локальной файловой поддержки в JavaScript - Windows Phone 8 Ошибка
Я работаю над проектом загрузчика фотографий, и в разработке Javascript у меня есть логика для проверки поддержки API файлов, поэтому я знаю, могу ли я поддерживать локальный выбор файлов. Удивительно, что код, который у меня на месте, возвращает значение true
на Windows Phone 8. Это не должно быть проблемой, однако элемент <input type=file>
на самом деле не поддерживается для WP 8 (как отмечено в блоге Windows в article about IE 10 for Mobile). Результат на WP 8, если на странице находится элемент <input type=file>
, он отображается просто отлично, но ничего не происходит при нажатии кнопки «Обзор».
Мой JS код, чтобы проверить поддержку API файла является:
function checkLocalFileSupport() {
if (window.File && window.FileReader && window.FileList && window.Blob) {
return true;
}
return false;
}
Я надеюсь, что кто-то может пролить некоторый свет на то, как лучше проверить и подтвердить, если локальный выбор файлов на конкретном устройстве/браузер. Как я уже сказал, мое текущее решение возвращает true
в WP 8. Я пытаюсь использовать различные методы, чтобы увидеть, включен ли <input type=file>
(фрагменты ниже), но все остальные решения по-прежнему возвращают true
для WP 8.
Одно из таких предостережений: I действительно хотите, чтобы код был агностическим. Таким образом, я не хочу обнюхивать пользователя-агента браузера. На мой взгляд, обнюхивание пользовательского агента - это откат, который я бы предпочел не реализовывать.
Вот несколько решений, которые я нашел и пытались, но все-таки вернуться true
на WP 8:
REFERENCING атрибут на входном элементе disabled
:
function isInputTypeFileImplemented() {
var elem = document.createElement("input");
elem.type = "file";
if (elem.disabled) return false;
try {
elem.value = "Test"; // Throws error if type=file is implemented
return elem.value != "Test";
} catch(e) {
return elem.type == "file";
}
}
Использование jQuery.support :
var support = (function(undefined) {
return $("<input type='file'>") // create test element
.get(0) // get native element
.files !== undefined; // check whether files property is not undefined
})();
Надеюсь, кто-то может помочь пролить свет на то, как точно y получите WP 8 для возврата значения false
для поддержки локального файла.
Заранее благодарен!