2012-01-09 42 views
0

我将拖放功能添加到我的一个项目中,并且我遇到了Firefox的问题。event.dataTransfer.files在Firefox中未定义

我的代码,我与测试这种情况是:

document.getElementById("folder_files").addEventListener("drop", function(event) { 
    event.preventDefault(); 
    event.stopPropagation(); 
    alert(event.dataTransfer.files[0].fileName); 
}, false); 

为了测试,我将文件拖动到我folder_files股利。在chrome(版本16)中,弹出的警报文件名很好。随着Firefox(版本8),我得到未定义。关于这里发生了什么的任何想法?

回答

1

发现问题。在倾倒物体中的所有东西之后,我可以看到chrome得到的数据与firefox不同。

什么镀铬渐渐:

'0' ... 
     'size' => "30379" 
     'lastModifiedDate' ... 
     'fileSize' => "30379" 
     'name' => "bg.png" 
     'type' => "image/png" 
     'webkitRelativePath' => "" 
     'fileName' => "bg.png" 
     'webkitSlice' => "function webkitSlice() { [native code] }" 
    'length' => "1" 
    'item' => "function item() { [native code] }" 

什么火狐是越来越:

0' ... 
     'size' => "30379" 
     'type' => "image/png" 
     'mozSlice' => "function mozSlice() { 
    [native code] 
}" 
     'name' => "bg.png" 
     'mozFullPath' => "" 
    'length' => "1" 
    'item' => "function item() { 
    [native code] 
}" 

而是在我的代码使用文件名/档案大小/文件类型命令,我只是使用名称/尺寸/类型开始。

0

你可以添加一个规范化的功能类似下面以支持:

// File Normalization for Firefox support: 
_normalizeFunction: function (file) { 
    if (file.name === undefined && file.size === undefined) { 
     file.name = file.fileName; 
     file.size = file.fileSize; 
    } 
},