HTML5元素拖拽drag与拖放drop相关API的具体介绍(图文)


当前第2页 返回上一页

1

2

3

4

5

6

7

8

9

target.ondragenter = function(){

  console.log('拖动进入目标元素');

}target.ondragover = function(){

  console.log('目标元素中拖拽');

}target.ondragleave = function(){

  console.log('拖动离开目标元素');

}target.ondrop = function(){

  console.log('拖放');

}


这时我们会发现元素拖放到目标元素中时
并没有触发drop事件

我们看到了一个特殊的光标(圆环+反斜线)
意思就是无效的拖放
所以导致没有触发drop事件
也就是说元素默认是不能够拖放
只要我们在目标元素的dragover事件中取消默认事件就可以解决问题

1

2

3

target.ondragover = function(e){

  console.log('目标元素中拖拽');

  e.preventDefault(); //增}

数据交换

只是简单的拖放毫无意义
我们需要进行数据交换
而这个用语数据交换的对象就是事件对象的属性dataTransfer
dataTransfer的两个核心方法是setData()和getData()
setData()用于设置数据,getData()用语接收数据

1

2

event.dataTransfer.setData('text','some text');

var text = event.dataTransfer.getData('text');//保存在dataTransfer中的数据只能在drop事件处理函数中处理

如果我们拖拽了选中文本
那么浏览器默认就会调用dataTransfer.setData,设置对应文本数据

setData()和getData()就是数据类型的字符串
IE定义的数据类型除了“text”文本类型还有“URL”
H5对它进行了扩展,可以指定各种MIME类型
但为了向后兼容,它同样支持“text”和“URL”
它们会被分别映射为“text/plain”和“text/uri-list”

如果数据保存为URL,浏览器会做特殊处理,把它当成网页链接
(所以拖拽链接到另外的浏览器窗口就会打开网页)


必要的话,我们可以手动保存需要传输的数据

1

2

3

4

5

6

7

8

9

10

var source = document.getElementById('source');var target = document.getElementById('target');

source.ondragstart = function(e){

  e.dataTransfer.setData('text','传递文本数据');

}

target.ondragover = function(e){

  e.preventDefault();

}

target.ondrop = function(e){

  console.log(e.dataTransfer.getData('text'));

}

拖拽设置

在dataTransfer中还有两个重要的属性
dropEffecteffectAllowed

dropEffect

dropEffect属性值为字符串,表示被拖动元素可以执行哪一种放置行为
要使用这个属性,必须在dragenter事件处理函数中设置

  • none 不能把元素拖放至此(除文本框外全部元素的默认值)

  • move 移动到目标

  • copy 复制到目标

  • link 目标打开拖动元素(拖动元素必须是链接并有URL)

effectAllowed

effectAllowed属性值也是字符串,表示允许拖动元素哪种dropEffect
要使用这个属性,必须在dragst事件处理函数中设置

  • uninitialized 没有设置任何拖放行为

  • none 不能由任何行为

  • copy 仅允许dropEffect值为copy

  • link 仅允许dropEffect值为link

  • move 仅允许dropEffect值为move

  • copyLink 允许dropEffect值为copy和link

  • copyMove 允许dropEffect值为copy和move

  • linkMove 允许dropEffect值为link和move

  • all 允许任意dropEffect

以上就是HTML5元素拖拽drag与拖放drop相关API的具体介绍(图文)的详细内容,更多文章请关注木庄网络博客

返回前面的内容

相关阅读 >>

HTML5初窥之简介

h5history 模式的实例教程

HTML5新特性之web worker

HTML5原生拖拽操作实例讲解

html中header定义什么意思

用h5做有特效的下拉框

HTML5开发实例-threejs实现粒子动画飘花效果代码分享

h5移动端各种各样的列表的制作方法(七最终章)

h5最全面解读

h5编辑器核心思想的实例分析

更多相关阅读请进入《HTML5》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...