HTML5新增的一些属性和功能之六——拖拽事件

 拖放事件的前提是分为源对象和目标对象,你鼠标拖着的是源对象,你要放置的位置是目标对象,区分这两个对象是因为HTML5的拖放事件对两者是不同的。

被拖动的源对象可以触发的事件:

1).ondragstart:源对象开始被拖动

2).ondrag:源对象被拖动过程中(鼠标可能移动也可能不移动)

3).ondragend:源对象被拖动结束

拖动源对象可以进入到上方的目标对象可以触发的事件:

1).ondragenter:目标对象被源对象拖动着进入

2).ondragover:目标对象被源对象拖动着悬停在上方

(3)ondragleave:源对象拖动着离开了目标对象

(4)ondrop:源对象拖动着在目标对象上方释放/松手

注意:1.必须阻止dragover事件的默认行为e.preventDefault,才可能触发drop事件! 

1 box.ondragover = function(e){
2 e.preventDefault(); //使得drop事件可以触发
3     }
4 box.ondrop = function(e){
5     do something...
6     }

 2.要使用jQuery的话,一定要记住e不是原始的event事件,而是jQuery的事件,这时候需要使用e.originalEvent.dataTransfer

拓展:HTML5新增的文件操作对象

File:代表一个文件对象|”

FileList:代表一个文件列表对象,类数组

FileReader:从文件中读取数据

FileWriter:向文件中写入数据

    

有了文件操作对象,可以直接拖动客户端文件到服务器下载的页面中。

div.ondrop=function(e){
    var f=e.dataTransfer.files[0];//文件对象 File
    varfr=new FileReader();//从文件对象中读取数据
    fr.readAsDataURL(f);//从文件中读取URL数据
        fr.onload=function(){
        img.src=fr.result;
        }
}
    

完整代码如下:

 1 //例:用户拖动图片到服务器上
 2 <!DOCTYPE html>
 3 <html>
 4 <head lang="en">
 5 <meta charset="UTF-8">
 6 <title></title>
 7 <style>
 8     #container {
 9         border: 1px solid #aaa;
10         border-radius: 3px;
11         padding: 10px;
12         margin: 10px;
13         min-height: 400px;
14     }
15 </style>
16 </head>
17 <body>
18     <h1>拖放API的扩展知识</h1>
19     <h3>请拖动您的照片到下方方框区域</h3>
20     <div id="container">
21
22     </div>
23
24     <script>
25         //监听document的drop事件——取消其默认行为:在新窗口中打开图片
26        document.ondragover = function(e){
27             e.preventDefault(); //使得drop事件可以触发
28         }
29         document.ondrop = function(e){
30             e.preventDefault(); //阻止在新窗口中打开图片
31         }
32
33         //监听div#container的drop事件,设法读取到释放的图片数据,显示出来
34         container.ondragover = function(e){
35             e.preventDefault();
36         }
37         container.ondrop = function(e){
38           console.log(‘客户端拖动着一张图片释放了...‘)
39           //当前的目标对象读取拖放源对象存储的数据
40           //console.log(e.dataTransfer); //显示有问题
41           //console.log(e.dataTransfer.files.length); //拖进来的图片的数量
42             var f0 = e.dataTransfer.files[0];
43           //console.log(f0); //文件对象 File
44
45           //从文件对象中读取数据
46         var fr = new FileReader();
47           //fr.readAsText(f0); //从文件中读取文本字符串
48         fr.readAsDataURL(f0); //从文件中读取URL数据
49         fr.onload = function(){
50         console.log(‘读取文件完成‘)
51         console.log(fr.result);
52         varimg = new Image();
53         img.src = fr.result; //URL数据
54         container.appendChild(img);
55       }
56     }
57
58     </script>
59 </body>
60 </html>
61                            

drag

时间: 2024-12-10 05:37:55

HTML5新增的一些属性和功能之六——拖拽事件的相关文章

HTML5新增的一些属性和功能

大致可以分为10个方面: HTML5表单元素和属性 表单2.0 视音频处理 canvas绘图 SVG绘图 地理定位 拖放技术 web work web storage web socket 一.新的input type HTML4已有的input type: text.password.radio.checkbox.hidden.file.submit.reset.button.image   HTML5新增的input type: email:在表单提交时提供了格式验证功能,要求@左右各有一个

HTML5新增的一些属性和功能之八——web Worker

Web Workers 为什么用web workers? 浏览器的原理中决定了页面打开只有一个主线程--UI渲染线程,如果线程中有耗时的程序(js)会阻塞线程,使得页面中其他的UI无法渲染,我们一般把js文件放在body结束之前,或者优化算法复杂度.但是根本上解决还是线程的问题.在HTML5中新增了web Workers的方法,用来解决JavaScript多线程的问题.把一些耗时的程序放在单独的js中,和浏览器的UI渲染线程同步执行. 如何用: 1.首先把需要单独执行的js代码单独放在一个js文

HTML5新增的form属性简介——张鑫旭

一.引言 HTML5中新增了一个名为form的属性,是一个与处理表单相关的元素. 在HTML4或XHTML中,我们要提交一个表单,必须把相关的控件元素都放在<form>元素下.因为表单提交的时候,会直接忽略不是其子元素的控件.但是,实际情况下,由于页面设计与实现的特殊性,会存在有些表单之外的元素也需要一并提交的情况,这时候,传统的表单功能就显得有些捉襟见肘了. HTML5中新增form属性就是为更好地处理这个问题才出现的.其作用,个人感觉,有点类似于label标签的for属性. 二.更好的实现

疯狂html5讲义(二):HTML5简的常用元素与属性(二):html5新增的通用属性

1.contentEditable属性 true时可直接编辑html元素里面的内容,且具有"可继承"的特点. 编辑后不要刷新页面,否则编辑的内容会丢失,可以通过该元素的innerHtml属性来获取编辑后的内容. 2.designMode属性 此属性相当于一个全局的contentEditable属性 3.hidden属性 可以替代css中的display,hidden=true相当于display:none 4.spellcheck属性 针对于input.textarea等元素,可以对用

HTML5 02. 多媒体控件、拖拽事件、历史记录、web存储、应用程序缓存、地理定位、网络状态

多媒体 video:是行内块(text-align: center; 对行内块适用) <figure></figure>: 多媒体标签 : <figcaption></figcaption>: 多媒体标题 方法: load() 加载.play()播放.pause()暂停 属性: currentTime 视频播放的当前进度. duration:视频的总时间. paused:视频播放的状态 事件:   oncanplay:事件在用户可以开始播放视频/音频(aud

谈谈html5新增的元素及其他功能

相信大家一开始学习web时看到html5就自然想到html,就算也没学过html,就好像听闻过小米2s就自然也熟悉小米3红米.不管是技术还是产品都是站在前辈的肩膀上发展起来的,正因此若是熟悉html,对于html5的学习就相当于在html这个容器里继续扔新的东西进去,哈哈哈,好像废话多了. 目前,web已经悄然引来html5的时代了,下面揭晓html5成功背后的面纱. 1.首先,html5语法发生了什么变化?! 1.1内容类型(祖宗不变) 扩展名:.html或htm 文件类型:text/html

html5新增及废除属性

html5中,在新增加和废除很多元素的同时,也增加和废除了很多属性. 一.新增属性 1.表单属性 a.autofocus 对input[所有类型].select.textarea与button指定autofocus属性.它以指定属性的方式让元素在页面加载后自动获得焦点.一个页面只能有一个元素有autofocus属性,同时设置多个,则第一个生效. 这个属性对登录页面很有用,可提升用户体验,有时登录页面就一个用户名,密码,页面加载后用户要手动定位到输入框,才能输入,有了autofocus,页面打开即

Kean专题:拖动一个属性块(JIG拖拽)

原文转载自:http://through-the-interface.typepad.com/through_the_interface/jigs/(该口已无法访问) 可访问转载入口:http://bbs.mjtd.com/thread-75618-1-1.html(转载自明镜通道by雪山飞狐_lzh) 原kean博客已经无法看到,故转载明经通道 雪山飞狐_lzh 老师整理内容     1.kean原文翻译     March 18, 2009 Jigging an AutoCAD block

html5拖拽事件 xhr2 实现文件上传 含进度条

<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> <meta charset="utf-8"> <meta name="viewport&