Ответ 1
Попробуйте if( window.FormData === undefined )
или if( window.FormData !== undefined )
.
Как проверить, поддерживает ли браузер поддержку загрузки файла HTML5 (объект FormData)?
var fd = new FormData();
Следуя ответам на этот пост, но код не возвращает правильный ответ о браузере,
window.onload = function()
{
if (!!window.FileReader)
{
alert('supported');
}
else
{
alert('not supported');
}
}
Firefox - supported
Chrome - supported
Opera - supported
Safari - not supported
IE9 - not supported
Но правильная поддержка браузера должна быть,
Firefox - supported
Chrome - supported
Opera - not supported
Safari - supported
IE9 - not supported
Я протестировал загрузку файла html 5 на Opera и уверенно работает не.
Я уверен, что safari поддерживает загрузку файла html 5.
Попробуйте if( window.FormData === undefined )
или if( window.FormData !== undefined )
.
С http://blog.new-bamboo.co.uk/2010/7/30/html5-powered-ajax-file-uploads
function supportAjaxUploadProgressEvents() {
var xhr = new XMLHttpRequest();
return !! (xhr && ('upload' in xhr) && ('onprogress' in xhr.upload));
};
Как FormData, способность send() и свойство upload (и его событие onprogress) являются частью XMLHttpRequest уровня 2, вы можете проверить на .upload, чтобы узнать, есть ли у вас уровень 2. я не имеют Mac, но функция (к сожалению, но правильно) возвращает false для Opera 11.50 (и true для Firefox 4).
function supportFormData() {
return !! window.FormData;
}
Источник: https://www.new-bamboo.co.uk/blog/2012/01/10/ridiculously-simple-ajax-uploads-with-formdata/
Это один лайнер, который я использую, чтобы проверить, поддерживает ли браузер FormData и загружает прогресс, в jQuery:
var xhr2 = !! ( window.FormData && ("upload" in ($.ajaxSettings.xhr()) );
Возможно, вы можете использовать обходной путь, предоставляемый этой библиотекой. https://github.com/francois2metz/html5-formdata
В Safari 5.1.7 Firefox < 6, Opera < 12.14 данные формы поддерживаются, но это ошибка.
Safari вернет размер файла 0
Opera не поддерживает метод добавления данных формы
firefox < 6 работает неправильно
Вам нужно проверить, поддерживает ли браузер API-интерфейс HTML5. Я делаю это, проверяя, установлена ли функция FileReader, если она не установлена, это означает, что браузер не поддерживает API-интерфейс файла.
// Check if window.fileReader exists to make sure the browser supports file uploads
if (typeof(window.FileReader) == 'undefined')
{
alert'Browser does not support HTML5 file uploads!');
}