2011-09-03 28 views
31

nasıl kontrol edebilirim tarayıcı desteği HTML5 dosyası yükleme (FormData nesne) olur?Tarayıcının HTML5 dosya yükleme özelliğini (FormData nesnesi) destekleyip desteklemediğini nasıl kontrol edebilirim?

var fd = new FormData(); 
bu post gelen cevap sonrasında

ancak kod tarayıcı hakkında doğru cevabı dönmez,

window.onload = function() 
{ 
if (!!window.FileReader) 
{ 
    alert('supported'); 
} 
else 
{ 
    alert('not supported'); 
} 
} 


Firefox - supported 
Chrome - supported 
Opera - supported 
Safari - not supported 
IE9 - not supported 

Ama doğru tarayıcı desteği olmalıdır,

Firefox - supported 
Chrome - supported 
Opera - not supported 
Safari - supported 
IE9 - not supported 

Ben Opera üzerinde html 5 dosya yükleme test ve değil workin olduğunu g kesin.

Ben safari html 5 dosya yüklemeyi destekleyen eminim.

cevap

11

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 gibi, yetenek) (Birini ve yükleme özelliğini (ve OnProgress olay) göndermek XMLHttpRequest seviyesinin 2 parçasıdır için cihazdan şu .upload için test edebilirsiniz Seviye 2'ye sahip olup olmadığınızı bakın. Elimde bir Mac yok, ancak bu işlev (ne yazık ki doğru bir şekilde) Opera 11.50 için false değerini döndürüyor (ve Firefox 4 için doğrudur).

-3

Tarayıcı HTML5 dosyası API destekleyip desteklemediğini kontrol etmeniz gerekir. FileReader işlevinin ayarlanıp ayarlanmadığını kontrol ederek, eğer ayarlanmamışsa, tarayıcının dosya API'sini desteklemediği anlamına gelir.

// 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!'); 
    } 
+3

Bu kod, FormData nesnesinden farklı olan FileReader nesnesini denetler. – webinista

68

if(window.FormData === undefined) veya if(window.FormData !== undefined) deneyin.

+12

+ 1, IE8/IE9 '(window.FormData === tanımlanmamış) 'doğru döner ve IE10 olarak, yanlış döndürür. – Annie

+2

Muhtemelen 'typeof' kullanılmalıdır, çünkü 'undefined' bazı tarayıcılarda bir anahtar kelime değildir. (ör. "var undefined = window" diyebilirim.FormData') – Azmisov

+0

Yani, typeof ile "if (typeof (window.FormData) == 'undefined')", değil mi? – DCShannon

1

Bu kütüphane tarafından sağlanan geçici çözümü kullanmak olabilir başladı. Safari 5.1.7 Açık

var xhr2 = !! (window.FormData && ("upload" in ($.ajaxSettings.xhr())); 
2

Bu jQuery bir projenin gelişimini tarayıcı FormData destekleyip desteklemediğini kontrol ve yüklemek için kullandığınız bir liner, bir sürülür ama buggy.

  • Safari çalışmıyor dosya boyutu 0

    Opera form verilerini ekleme yöntemi desteklemiyor

    firefox < 6 dönecektir

    doğru

İlgili konular