Ser*_*gio 9 html5 internet-explorer-10
我有一个简单的Web应用程序,它使用HTML5中的filereader api通过拖放接受文件上传.
在将文件拖到网页上时,将触发正确的拖动事件,但是当我删除文件时,IE只是打开它而不是让JS处理它.
丢弃代码非常基本:
this.addEventListener("drop", function(event) {
event.stopPropagation();
event.preventDefault();
Self.drop(event); //this event is not hit. IE just opens the file!
}, false);
Run Code Online (Sandbox Code Playgroud)
这是IE10的特定限制还是我可能做错了什么?
谢谢
Eli*_*nor 24
您还需要监听dragenter和dragover事件并防止其默认行为.您还需要防止drop事件处理程序中的默认行为.
例如,您可能想要做这样的事情......
var $dropArea = $( "#drop-area" );
$dropArea.on({
"drop" : makeDrop,
"dragenter": ignoreDrag,
"dragover": ignoreDrag
});
function ignoreDrag( e ) {
e.preventDefault();
}
function makeDrop( e ) {
var fileList = e.originalEvent.dataTransfer.files,
fileReader;
e.preventDefault();
if ( fileList && fileList.length > 0 ) {
fileReader = new FileReader();
fileReader.onloadend = handleReaderOnLoadEnd( $( "<img />" ) );
fileReader.readAsDataURL( fileList[ 0 ] );
}
}
function handleReaderOnLoadEnd( $image ) {
return function( event ) {
$image.attr( "src", this.result )
.addClass( "small" )
.appendTo( "#drop-area" );
};
}
Run Code Online (Sandbox Code Playgroud)
你可以在这个JSFiddle http://jsfiddle.net/qsyNW/找到一个有用的例子
注意:您不必像我一样使用jQuery.但是,如果你确实使用了jQuery,那么你需要e.originalEvent在drop事件处理程序中引用才能获得dataTransfer.files.
| 归档时间: |
|
| 查看次数: |
5638 次 |
| 最近记录: |