有两个问题请老师解答一下,谢谢!
关于H5本地图片拖拽的两个问题,请老师解答一下,谢谢!
添加了ondragleave事件,但是快速拖拽进div内的话,会导致div内的文字交替闪烁,慢慢将图片拖拽进去则不会,该怎么解决?
还有,阻止浏览器在新窗口中打开本地图片事件会失败。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>html5拖拽事件</title>
<style type="text/css">
body{
margin: 0;
}
#box{
width: 300px;
min-height: 300px;
border: 2px solid #fce;
margin: 20px auto 0;
}
span{
width: 300px;
height: 300px;
color: #c53;
font-size: 20px;
text-align: center;
display: block;
line-height: 300px;
}
</style>
</head>
<body>
<div id="box"><span>嗨,图片放这里 o!</span></div>
<script type="text/javascript">
document.ondragover=function(e){
e.preventDefault();
}
document.ondrop=function(e){
//阻止浏览器在新窗口中打开本地图片
e.preventDefault();
}
//目标对象事件
// var oSpan=document.getElementById("box").getElementsByTagName("span");
var oSpan=document.querySelector("#box span");
//拖拽模块
box.ondragover=function(e){
e.preventDefault();
oSpan.style.display="none";
console.log("over");
}
box.ondragleave=function(e){
e.preventDefault();
oSpan.style.display="block";
console.log("leave");
}
box.ondrop=function(e){
e.preventDefault();
var imgFiles=e.dataTransfer.files;
for(var i=0;i<imgFiles.length;i++){
var imgRead=new FileReader();//文件读取器
imgRead.readAsDataURL(imgFiles[i]);//要读取的文件对象
imgRead.onload=function(){
//console.log(this.result);
console.log(i+"张图片的数据读取完成");
var img=new Image();
img.src=this.result;
img.style.width="100px";
img.style.height="100px";
box.appendChild(img);
}
}
}
//ondragleave事件会导致div内的文字交替闪烁;且导致阻止浏览器在新窗口打开本地图片失败。该怎么解决?
</script>
</body>
</html>0
收起
正在回答 回答被采纳积分+1
1回答
响应式开发与常用框架 2018
- 参与学习 人
- 提交作业 2198 份
- 解答问题 5012 个
如果你有web端基础,既想进阶,又想进军移动端开发,那就来吧,我们专题为你带来的课程有HTML5、CSS3、移动基础、响应式、bootstrap、less等,让你在前端道路上畅通无阻!
了解课程

恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星