当前位置:  开发笔记 > 编程语言 > 正文

如何确定HTML5 drag'n'drop文件上传API的存在(如FF3.6中的那个)

如何解决《如何确定HTML5drag'n'drop文件上传API的存在(如FF3.6中的那个)》经验,为你挑选了3个好方法。

我正在编写一个应该支持文件的HTML5拖放API的应用程序,就像这里描述的那样.我想对浏览器是否支持这种疯狂进行编程检查:)现在有效的解决方案是检查浏览器是否提供了FileReader类,如下所示:

  if (typeof(FileReader) == "undefined") {
    $("#dropbox").hide();
  } else {
    // connect events
    $("#filebox").hide();
  }

但它显然不是正确的(我根本不使用那个类).

有任何想法吗?



1> dshaw..:

检查FileReader是否存在是正确的方法.FileReader是File Api的官方部分.我会把它与Modernizr结合起来.版本1.2将提供拖放支持.您应该能够在GitHub上获取源代码并立即开始使用它. http://github.com/Modernizr/Modernizr/blob/master/modernizr.js

if (!!FileReader && Modernizr.draganddrop) {
  // sexy drag and drop action
} else {
  // no drag and drop support available :(
}

如果您还没有看到潜入HTML5,那么您一定要查看Mark Pilgrim关于检测HTML5的建议.


IE8中的if(!! FileReader)`会抛出"FileReader is undefined"错误

2> matt burns..:

我不得不对dshaw在IE8中的支持做出一点改动:

if (!!window.FileReader && Modernizr.draganddrop) {
  // sexy drag and drop action
} else {
  // no drag and drop support available :(
}

你可以在这里试试


你还需要IE9中的window.FileReader.

3> Paul Rouget..:
if ("files" in DataTransfer.prototype) {...}


原型是一个核心的JS编程结构.http://en.wikipedia.org/wiki/JavaScript
webkit不公开DataTransfer对象,请参阅https://github.com/Modernizr/Modernizr/issues#issue/57
不知道为什么但是下面的代码不能在Chrome上工作(如果是DataTransfer.prototype中的"文件"){alert('Drag Drop file support that there');}它说...未捕获的ReferenceError:未定义DataTransfer.你能帮忙吗?
推荐阅读
小妖694_807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有