我会事先告知您,我的 JavaScript 经验有限。
目前,我有 JavaScript 代码:
$('#xhr-filebox').bind({
"dragover": HandleDragEvent,
"dragleave": HandleDragEvent,
"drop": HandleDropEvent
});
function HandleDropEvent(e){
var files = e.target.files || e.dataTransfer.files;
UploadFile(files[0]);
}
(有些代码省略了,但如果您要求我会添加更多)
...和 HTML:
<div class="filebox" id="xhr-filebox">
<p id="xhr-action">...or click me to pick one.</p>
</div>
但是,当我将文件拖入其中时,Chrome JS 控制台会这样说:
未捕获的类型错误:无法读取未定义的属性“文件”
但是,它可以在从文件输入读取时获取 FileList 对象。
奇怪的是,当我记录事件参数( console.log(e) )时,它将它记录为 f.event,而在我的类似脚本中,它将它记录为 MouseEvent (屏幕截图:http://i.stack.imgur .com/3krcT.png )
与 jQuery 中的 bind() 函数不同,this 使用 getElementById() 返回的 DOM 对象的 addEventListener() 函数,IE this 是纯 JavaScript。我已经尝试过这种方法,但没有任何新的事情发生。