博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[练习]JS鼠标拖拽(DnD)操作
阅读量:6497 次
发布时间:2019-06-24

本文共 1225 字,大约阅读时间需要 4 分钟。

拖放(Drag and Drop,DnD)操作因为涉及到与底层OS的结合,所以是较为复杂的交互操作。 这里先实现一个简单的拖拽图片到浏览器显示到操作, 主要用到了HTML5中的FileAPI:

先上DEMO

需要注意的是浏览器通过取消相应的拖拽事件来表明它对该事件有兴趣, 比如通过取消dragover来表明浏览器已经做好准备接受进一步的拖拽,接着说dragend最后到dropdrop事件发生时,就可以使用HTML5新的文件API也就是FileAPI进行数据交互,具体见本栗代码?

代码:

HTML

File API可用

鼠标拖拽图片放入框中

CSS

#holder { border: 10px dashed #ccc; width: 300px; height: 300px; margin: 20px auto;}#holder.hover { border: 10px dashed #333; }p {text-align:center;}

JS

var holder = document.getElementById('holder'),    state = document.getElementById('status');if (typeof window.FileReader === 'undefined') {  state.className = 'fail';} else { state.className = 'success';  state.innerHTML = 'File API可用';}  holder.ondragover = function () {  this.className = 'hover'; console.log('dragover'); return false;};holder.ondragend = function () { this.className = ''; return false; };holder.ondrop = function (e) {  //console.log(e)  this.className = '';  e.preventDefault();  var file = e.dataTransfer.files[0],      reader = new FileReader();  reader.onload = function (event) {    console.log(event.target);    holder.style.background = 'url(' + event.target.result + ') no-repeat center';  };  console.log(file);  reader.readAsDataURL(file);  return false;};

转载地址:http://vquyo.baihongyu.com/

你可能感兴趣的文章
容斥定理,皮克公式
查看>>
[LeetCode] Rotate List
查看>>
git+idea
查看>>
集合异常测试
查看>>
cocos2d游戏开发,常用工具集合
查看>>
FatTree胖树拓扑结构
查看>>
Kafka深度解析
查看>>
unsigned 后面不跟类型的情况
查看>>
fio硬盘压力测试
查看>>
信号处理——卷积(convolution)的实现
查看>>
多线程同步(循环50 基础加深版)
查看>>
Black and White
查看>>
静态变量和实例变量的区别
查看>>
晨跑【最小费用最大流】
查看>>
景点中心 C组模拟赛
查看>>
iOS国际化(多语言设置)
查看>>
bzoj 2733 平衡树启发式合并
查看>>
sublime简书安装配置
查看>>
爱上MVC~Web.Config的Debug和Release版本介绍
查看>>
条款03 尽可能使用const
查看>>