html5的拖拽事件
原生拖放
一、若要一个元素可以被拖放,首先要为元素添加draggable属性
| true | 可以被拖放 |
| false | 不可以被拖放 |
| auto | 除img或url以外都可以被拖放 |
| 其他值 | 都不可以被拖放 |
注释:在火狐中设置draggable属性无用,但可以再dragstart事件中为dataTransfer对象中添加setData()方法后就可以允许被拖拽。支持draggable的属性的浏览器有IE10+、Firefox 4+、Safari 5+,chrome,Opera 11.5+.
二、拖拽发生过程
被拖拽元素
| dragstart | 按下鼠标键并开始移动鼠标时 |
| drag |
在dragstart事件之后,在元素被拖动期间会持续触发该事件 |
| dragend | 当拖动停止时,会触发dragend事件 |
放置目标元素
| dragenter | 有元素被拖动到放置目标上 |
| dragover |
紧随dragenter发生,在被拖动的元素 还在放置目标范围内移动时,会持续触发该事件 |
| dragleave | 在元素被拖出放置目标时触发 |
| drop | 元素被放到了放置目标中触发 |
注释:拖拽发生过程:dragstart->drag->dragenter->dragover->dragleave/drop->dragend
三、自定义放置目标
原因:所有元素默认是不允许放置的,尽管都支持放置目标事件,当拖放元素经过不允许放置的元素时,就会看到一种特殊光标(圆环中有一条反斜线)。
解决方法:把任何元素都变成有效的放置目标,重写dragenter和dragover事件的默认行为.如
function prevent(e){
var e = e || window.event;
e.preventDefault(e);
}
droptarget.dragover = prevent;
droptarget.dragenter = prevent;
此时特殊光标会变成允许放置的光标。
注释:firfox 3.5+中,放置事件的默认行为是打开被放到放置目标上的url,为支持FireFox支持正常的拖放,还要取消drop事件的默认行为,阻止它打开URL.
四、dataTransfer对象
IE5引入了dataTransfer对象,它是事件对象的一个属性,用于从被拖动元素向放置目标传递字符串格式的数据。
| setData() | 保存值,第一个参数可以是“text/plain"和"text/uri-list" |
| getData() | 获取在setData()中保存的值。 |
| dropEffect | 属性,知道被拖动的元素能够执行哪种放置行为。搭配effectAllowed属性才有用 |
| effectAllowed | 属性,表示允许拖动元素的哪种dropEffect. |
注意:dataTransfer对象中的数据只能在drop事件处理程序中读取。如果ondrop处理程序中没有读到数据,那就是dataTransfer对象已经被销毁,数据也丢失了。
| dropEffect的值 | 含义 |
| none | 不能把拖动的元素放在这里 |
| move | 应该把拖动的元素移动到放置目标 |
| copy | 应该把拖动的元素复制到放置目标 |
| link | 表示放置目标会打开拖动的元素(但拖动的元素必须是一个连接,有URL) |
| effectAllowed值 | 含义 |
| uninitialized | 没有给被拖动的元素设置任何放置行为 |
| none |
被拖动的元素不能有任何行为 |
| copy | 只允许值为'copy'的dropEffect |
| link | 只允许值为'link'的dropEffect |
| move | 只允许值为'move'的dropEffect |
| copyLink | 只允许值为'copy'和“link”的dropEffect |
| copyMove | 只允许值为'copy'和“move”的dropEffect |
| linkMove | 只允许值为'move'和“link”的dropEffect |
| all | 允许任意的dropEffect |
html5的拖拽事件的更多相关文章
- HTML5原生拖拽事件的值传递(三dataTransfer对象)
引用一篇博客,讲解的比较详细:http://www.tuicool.com/articles/j6Zbam
- html5拖拽事件 xhr2 实现文件上传 含进度条
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...
- HTML5 02. 多媒体控件、拖拽事件、历史记录、web存储、应用程序缓存、地理定位、网络状态
多媒体 video:是行内块(text-align: center; 对行内块适用) <figure></figure>: 多媒体标签 : <figcaption> ...
- HTML5深入学习之鼠标跟随,拖拽事件
知识点(鼠标跟随): mousedown: 当用户用鼠标点击在某一元素上就会触发该事件 mouseover: 当鼠标指针在某一元素上移动就会触发改事件 下面这个例子的效果就是鼠标点击元素后,元素跟着 ...
- HTML5之拖拽(兼容IE和非IE)
前世:项目中需要拖动div,然后和某个div进行位置交换,这不是关键,关键是还要保存位置,然后在下次打开的时候按照保存的位置显示.还好本人功力深厚,一下子就想到了用localStorage来保存,事实 ...
- HTML5文件拖拽
HTML5新增的File API, 可以获取名称.文件大小.类型等信息,需先对DOM中的Element进行拖拽事件绑定 相关API 首先获取节点,绑定拖动到该节点的事件,可以改变鼠标形状 var dr ...
- html5 文件拖拽上传
本文首先发表在 码蜂笔记 : http://coderbee.net/index.php/web/20130703/266 html5 文件拖拽上传是个老话题了,网上有很多例子,我一开始的代码也是网 ...
- Nodejs express、html5实现拖拽上传
一.前言 文件上传是一个比较常见的功能,传统的选择方式的上传比较麻烦,需要先点击上传按钮,然后再找到文件的路径,然后上传.给用户体验带来很大问题.html5开始支持拖拽上传的需要的api.nodejs ...
- H5原生拖拽事件
使用原生js实现简单的拖拽事件 <!DOCTYPE html> <html lang="en"> <head> <meta charset ...
随机推荐
- sqlserver 获取数据库、表和字段相关信息
--获取指定服务器上的所有数据库 SELECT Name FROM Master..SysDatabases ORDER BY Name --获取指定数据库下所有表 SELECT Name FROM ...
- ORACLE 导出表结构及备注
https://blog.csdn.net/u013303551/article/details/52354230 SELECT t.table_name, t.colUMN_NAME, ...
- Linux 加阿里yum源
阿里 yum 源设置 阿里云Linux安装镜像源地址:http://mirrors.aliyun.com/CentOS系统更换软件安装源 第一步:备份你的原镜像文件,以免出错后可以恢复.mv /etc ...
- 回归JavaScript基础(二)
主题:在HTML中使用JavaScript. 要想把JavaScript放到网页中,就必须涉及到Web的核心语言HTML.向HTML页面中插入JavaScript的主要方法,就是使用<scrip ...
- hibernate中指定非外键进行关联
/** * 上级资源 */ @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "PARENT_ID", reference ...
- Oracle案例13—— OGG-01163 Oracle GoldenGate Delivery for Oracle, reprpt01.prm
由于虚拟机宿主机重启,导致很多虚拟机服务需要重点关注,其中一个DG的从库和另一个report库有OGG同步,所以这里再系统恢复后检查OGG状态的时候,果然目标端的REPLICAT进程处于abend状态 ...
- [翻译] LLSimpleCamera
LLSimpleCamera https://github.com/omergul123/LLSimpleCamera LLSimpleCamera is a library for creating ...
- 解决tableView中cell动态加载控件的重用问题
解决tableView中cell动态加载控件的重用问题 tableView的cell,有时候需要在运行时取得对应的数据后才能够动态的创建该cell中的控件并加载到该cell中,此时,你一定会遇到重用问 ...
- 北美IT求职攻略
http://www.followmedoit.com/bbs/forum.php?mod=viewthread&tid=19&extra=page%3D1 身在北美,想留下来并能过得 ...
- Linux 系统的网络基础_【all】
网络基础 1.网线:568B: 白橙 橙色 白绿 蓝色 白蓝 绿色 白棕 棕色 2.交换机:电信号转发的网络设备,它可以为接入交换机的任2个网络节点设备提供电信号通信 3.路由器:连接局域网,广域网的 ...