老师,看我看我。。有两个问题麻烦老师解答一下,谢谢老师!
来源:4-2 选择题
不安分的魔菇
2019-01-12 19:41:55
课下找了一个小练习,关于H5本地图片拖拽上传。但是有两个问题,请老师解答一下,谢谢!
我想实现,当我图片拖进去但是我没放,又拖出来的时候还是显示提醒:“图片放在这里”。就是当窗口中没有图片的时候,还是显示文字。添加了ondragleave事件,但是快速拖拽进div内的话,会导致div内的文字交替闪烁,慢慢将图片拖拽进去则不会,该怎么解决?
还有,阻止浏览器在当前窗口中打开本地图片事件有时候会失败。图片拖进html页面中还是会出现刷新当前窗口在当前窗口打开。
<!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>1回答
Miss路
2019-01-13
同学,你好。你说的闪烁情况确实是存在的, 因为你要判断图片是否有进来这个区域,你拿着图片不放本身就是个不友好的操作,把这个事件去了也不能判断,所以这个可以先不做处理。关于你说到了第二个问题我没有发现,你可以再详细的说一下,也可以结合截图。
如果帮助到了你,欢迎采纳!
祝学习愉快!
相似问题
回答 3
回答 1