小编mar*_*rio的帖子

在Firefox中HTML5拖放文件夹检测.它甚至可能吗?

我有一个放置区域,我想检测被拖动的项目是文件夹还是文件.在chrome中我通过使用实现了这一点

for (var i = 0; i < nrOfFiles; i++) {
    var entry = e.originalEvent.dataTransfer.items[i].webkitGetAsEntry();
    if (entry.isDirectory) {
        //folder detection
}
Run Code Online (Sandbox Code Playgroud)

在Firefox中,无法使用上述解决方案(webkit),在花了很多时间试图解决这个问题后,我想出了以下解决方案(并且失败了)

  1. 我检查拖动的项目是否没有类型和大小,如下所示,并且在大多数情况下它按预期工作.从我所看到的这个效率并不高,因为有些文件可能没有文件扩展名,所以我尝试用FileReader API读取文件为二进制字符串(readAsBinaryString)或readAsArrayBuffer,并在项目为的情况下捕获异常不可读,但永远不会抛出异常.

    var files = e.originalEvent.dataTransfer.files;
    for (var i = 0; i < nrOfFiles; i++) {
    if (files[i].size === 0 && files[i].type==="") {
    
        try{
           var reader = new FileReader();
            reader.readAsBinaryString(files[i]);
        }catch(e){
            //folder detection ?
        }
    
    }}
    
    Run Code Online (Sandbox Code Playgroud)
  2. 在下面的解决方案中,我正在尝试使用mozGetDataAt,这是相应的webkitGetAsEntry(???不是100%关于这个请纠正我,如果我错了)但我得到一个安全例外.

    var entry = e.originalEvent.dataTransfer.mozGetDataAt("application/x-moz-file",i);
    if (entry.isDirectory) { //not even reaching this statement. idk if isDirectory is applicable to entry
        //folder detection? …
    Run Code Online (Sandbox Code Playgroud)

javascript firefox jquery html5

12
推荐指数
3
解决办法
6970
查看次数

标签 统计

firefox ×1

html5 ×1

javascript ×1

jquery ×1