I am writing an application that\'s supposed to support HTML5 drag/drop API for file, much like the on described here. I would like to perform a programmatic check on whethe
This code fails in IE8. This would probably be better:
if (typeof(FileReader) === 'function' && Modernizr.draganddrop) {
//sexy drag and drop action
} else {
//no drag and drop support available :(
};
if ("files" in DataTransfer.prototype) {...}
Its a bit trickier. iOS7 reports that it supports both FileReader and draganddrop pictures uploading. Since I was looking for a more general file upload that I couldn't do with iOS, I needed another answer.
Modernizr issue 57 at here talks about the issue. Now with windows 8 and both touch and mouse, its tricky. There's code in the middle by chriskeeble that I used successfully. It relies on Modernizr and agent detection.
if (!window.File || !window.FileReader || !window.FileList || !window.Blob) {
alert('The File APIs are not fully supported in this browser. Please upgrade your browser.');
}
I had to make a slight change to dshaw's answer for support in IE8:
if (!!window.FileReader && Modernizr.draganddrop) {
// sexy drag and drop action
} else {
// no drag and drop support available :(
}
You can try it out here
either use pure Modernizr approach
if (Modernizr.filereader && Modernizr.draganddrop) {
//sexy drag and drop action
} else {
//no drag and drop support available :(
};
or use underlying DOM check directly but with exception handling
var featuresSupported = false;
try {
if (!!(window.File && window.FileList && window.FileReader) && Modernizr.draganddrop)
featuresSupported = true;
)
catch (err)
{
}
if (featuresSupported)
<do sexy effects>
else
<perform rollback to legacy stuff>