HTML5拖放API
拖放事件
事件提供了拖放可以控制几乎所有方面的拖放操作。棘手的部分是确定每个事件触发:在拖项目火;别人火下降的目标。拖动项时,以下事件(按照这个顺序):
拖曳开始
拖
dragend
此刻你把鼠标按钮和开始移动鼠标的拖曳开始,事件触发的项目被拖。光标更改为无滴符号(用线穿过圈),说明该项目不能落在自己。你可以使用ondragstart事件处理程序运行javascript代码拖动开始。
后拖曳开始事件发生时,拖动事件火灾和持续射击只要对象是被拖。这是类似于鼠标移动火灾,也多次作为移动鼠标。当拖动停止(因为你滴项目上无论是有效的或无效的,下降的目标)dragend事件触发。
全部三个项目的目标是把元。默认情况下,浏览器不会在阻力发生变化的拖动元素的外观,所以它是由你来改变外观。大多数浏览器做的,然而,创建一个元素被拖着,总是立即下光标半透明的克隆。
当一个项目被拖到一个有效的拖放目标,按以下顺序发生的事件:
DragEnter
DragOver
dragleave或下降
这个DragEnter事件(类似于鼠标悬停火灾事件)一旦项目被拖到下降的目标。后立即DragEnter火灾的事件,DragOver事件会继续火的项目被拖在下降的目标边界。当拖动项的拖放目标外,DragOver停止射击,dragleave事件被触发(类似mouseout)。如果把项目实际上是下降的目标,而不是下降的事件触发dragleave。这些活动的目标是降低目标元素。
自定义的拖放目标
当你试图拖了无效的下降的目标,你看到一个特殊的光标(用线穿过圈)说明你不能放弃。即使所有的元素都支持拖放目标事件,默认是不允许滴。如果你将一个元素的东西,不让一滴的,滴事件不会触发无论用户行动。然而,你可以将任何元素到一个有效的拖放目标通过重写默认行为的DragEnter和DragOver事件例如,如果你有一个
一个ID元素“droptarget”,你可以使用下面的代码,把它变成一个下降的目标:
<trans data-src="var droptarget = document.getElementById("droptarget");
EventUtil.addHandler(droptarget, "dragover", function(event){
EventUtil.preventDefault(event);
});
EventUtil.addHandler(droptarget, "dragenter", function(event){
EventUtil.preventDefault(event);
});">无功droptarget =文件。getElementById(“droptarget”);
eventutil。AddHandler(droptarget,“DragOver”,功能(事件){
eventutil。
preventDefault(事件);});
eventutil。AddHandler(droptarget,“DragEnter”,功能(事件){
eventutil preventDefault(事件。);</trans>
经过这些改变,你会注意到光标现在表明下降是允许通过拖放目标当拖动元件。同时,该滴事件将火。
在Firefox 3.5 +,一滴事件的默认行为是浏览的网址,投在下降的目标。这意味着一个图像到下降的目标将导致网页浏览的图像文件,这是落在无效的URL错误放置目标结果的文本。火狐浏览器的支持,你也必须取消掉事件的默认行为来防止这种导航的发生:
<trans data-src="EventUtil.addHandler(droptarget, "drop", function(event){
EventUtil.preventDefault(event);
});">eventutil。AddHandler(droptarget,“滴”,功能(事件){
eventutil。preventDefault(事件);
});</trans>
数据传输对象
简单地拖拽没有任何用处的数据实际上是被影响。有助于通过拖放操作数据的传输,Internet Explorer 5介绍数据传输对象,作为财产而存在事件是用于字符串数据从拖项目转移到下降的目标。因为它是一个属性事件,的数据传输对象不存在,除了在一个拖放事件的事件处理程序的适用范围。在一个事件处理程序,您可以使用对象的属性和方法来使用拖放功能。这个数据传输对象现在对HTML5的工作草案的一部分。
这个数据传输对象有两个主要方法:getdata()和setdata()。正如你可能想到的,getdata()能够读取一个值的存储setdata()。第一个参数为setdata(),和唯一的争论getdata(),是一个字符串表示的数据集的类型:要么“文本”或“URL”,如下所示:
<trans data-src="//working with text
event.dataTransfer.setData("text", "some text");
var text = event.dataTransfer.getData("text");
//working with a URL
event.dataTransfer.setData("URL", "http://www.00h5.com/");
var url = event.dataTransfer.getData("URL");">/ /文本
事件工作。数据传输。SetData(“文本”,“文本”);
var text =事件。数据传输。GetData(“文本”);
/工作与
URL
事件。数据传输。SetData(“url”,“HTTP:/ / www.00h5 COM。/“);
var url =事件。GetData(数据传输;</trans>
虽然Internet Explorer开始引入“文本”和“URL”为有效的数据类型,HTML5将允许任何MIME类型来指定。价值观“文本”和“URL”将支持HTML5为向后兼容性,但它们映射到“文字/平原”和“文本/ URI列表”。
这个数据传输对象可以包含一个值的每个MIME类型,这意味着你可以存储文本,同时也没有重写URL。存储在数据数据传输可直到滴事件。如果你不能在检索数据产品事件处理程序,该数据传输对象被破坏、数据丢失。
当您将文本从一个文本框,浏览器调用setdata()在拖动文本存储“文本”格式同样,当一个链接或图像拖,setdata()所谓的URL存储。它是可能的检索这些值数据时,落在一个目标使用getdata()。你也可以叫setdata()手动在拖曳开始事件存储,你可能想要检索后的自定义数据。
这两者之间是有区别的数据视为文本和数据作为一个URL。当你指定将数据存储为文本,它没有任何特殊待遇。当你指定将数据存储为一个URL,然而,它就像对待网页上的链接,这意味着如果你放它到另一个浏览器,浏览器将定位到URL。
Firefox 5版本不正确通过别名“URL”以“文本/ URI列表”或“文本”以“文字/平原”。它,然而,别名“文本”(大写字母T)来“文字/平原”。用于从数据检索数据最好的跨浏览器兼容性,你需要检查的网址和使用两个值“文本”纯文本:
<trans data-src="var dataTransfer = event.dataTransfer;
//read a URL
var url = dataTransfer.getData("url") ||dataTransfer.getData("text/uri-list");
//read text
var text = dataTransfer.getData("Text");">数据传输数据传输;var =事件。
/读取URL
var url =数据传输。GetData(URL)| |数据传输。GetData(“文本/ URI列表”);
/阅读文本
var text = GetData(数据传输;</trans>
,缩短数据名称首先是很重要的,因为通过10版不支持扩展名和Internet Explorer也抛出一个错误时,数据的名字不认可。
dropeffect和effectallowed
这个数据传输对象可以用来做更多的不是简单地传输数据来回;它也可以被用来确定什么类型的行为可以通过拖动和拖放目标项目。你通过两个属性:dropeffect和effectallowed。
这个dropeffect属性是用来证明这种下降行为允许浏览器。这个属性有以下四种可能的值:
“不”-拖动项目不能扔在这里。这是除了文本框的默认值。
“移动”-拖动项应移到下降的目标。
“复制”-拖动项目应该复制到放置目标。
“链接”-表示下降的目标将定位到拖放的项(如果它是一个网址)。
这些价值观会导致不同的光标显示拖动项时,在下降的目标。它是你的,但是,实际上导致行动光标所指示。换句话说,没有什么是自动移动,复制,或联系没有你的直接干预。你唯一得到的自由是指针的变化。为了使用dropeffect属性,你必须把它在ondragenter事件处理程序的拖放目标。
这个dropeffect属性是无用的,除非你也设置effectallowed。此属性指示dropeffect允许拖动的项。可能的值如下:
“初始化”没有行动已经设置为拖动的项。
“不”没有行动是在拖项目允许。
“复制”只有“复制”是允许的。
“链接”只有“链接”是允许的。
“移动”只有“动”是允许的。
“复制链接”“复制”和“链接”是允许的。
“copymove”“复制”和“移动”是允许的。
“linkmove”“链接”和“动”是允许的。
“所有”所有的值是不允许的。
此属性必须设置ondragstart事件处理程序内的。
假设你想让一个用户来移动文本从一个文本框中插入
。要做到这一点,你必须设置dropeffect和effectallowed以“移动”。文本不会自动移动本身,因为在一个下降的事件的默认行为
是什么也不做。如果你重写默认行为,文字会自动从文本框删除。然后,你把它插入到
要完成这个动作。如果你改变了dropeffect和effectallowed以“复制”,文本框中的文本不会自动被删除。
注:Firefox通过5版有问题effectallowed在下降的事件可能不会发生火灾时该值设置代码。
draggability
默认情况下,图像,链接,和文本拖动,这意味着没有额外的代码来允许用户开始拖动它们是必要的。只有经过一段文本拖动已经凸显,而图像和链接可以被在任何时间点。
它有可能使其他元素拖动。HTML5的所有HTML元素指定指示拖动财产如果元素可以拖。图像和链接拖动自动设置为true,而一切虚假的默认值。这个属性可以设置为允许其他元素被拖动或确保图像或链接不会拖动。例如:
<trans data-src="<!"><!</trans><trans data-src="-- turn off dragging for this image -->
<img src="smile.gif" draggable="false" alt="Smiley face">
<!">——关闭——>拖动这个形象
< IMG src=“微笑。GIF”拖动=“假”alt=“笑脸”>
<!</trans><trans data-src="-- turn on dragging for this element -->
<div draggable="true">...</div>">——打开拖动这个元素——>
<div拖动=“真”>……< / DIV ></trans>
可拖动的属性是在Internet Explorer 10 + 4 +支持,Firefox,Safari 5 +,和铬。京剧,作为11.5版本,不支持HTML5拖放。为了让火狐启动阻力,你必须添加一个ondragstart事件处理程序集的一些信息在数据传输对象。
注意:Internet Explorer 9和更早的让你做出任何元素拖动通过调用dragdrop()在它的方法鼠标按下事件Safari 4和早期需要一个CSS风格的加入- KHTML用户拖动:元让一个元素拖动。
额外的成员
HTML5规范的表明在附加的方法数据传输目标
addElement(元)-添加一个元素的拖动操作。这是纯粹的数据而不影响外观的拖动操作。为写这篇文章的时候,没有浏览器实现了这种方法。
cleardata(格式)清除存储特定格式的数据。这是在Internet Explorer中实现,Firefox 3.5 +,Chrome,Safari 4 +。
setdragimage(元,x,y)-允许您指定要显示在鼠标的拖动发生图像。该方法接受三个参数:一个HTML元素的X和Y坐标的显示和图像上的光标所在的位置应。的HTML元素可以是一个图像,在这种情况下,图像显示,或任何其他元素,在这种情况下,一个渲染的元素显示。Firefox 3.5,Safari 4 +,和Chrome都支持这种方法。
类型一列数据类型正在存储。这一集就像一个数组存储的数据类型为字符串,如“文本”。Internet Explorer 10 +,Firefox 3.5 +,和Chrome实现这个属性。转载请著名出处:零零H5网http://www.00h5.com/
HTML5拖放API的更多相关文章
- HTML5拖放API实现拖放排序的实例代码
想要拖放某个元素,必须设置该元素的 draggable 属性为 true,当该属性为 false 时,将不允许拖放.而 img 元素和 a 元素都默认设置了 draggable 属性为 true,可直 ...
- HTML5权威指南--标签新变化,文件API,拖放API(简要学习笔记一)
1.标签元素更加语义化 2.内容类型仍然为“text/html” 扩展符仍然为html或者htm. <1>DOCTYPE 声明<!DOCTYPE html>就可 ...
- html5的新特性——拖放API
在HTML5之前只能使用鼠标事件模拟出"拖放"效果:HTML5专门为拖放提供了7个事件句柄. 被拖动的源对象可以触发的事件: (1)ondragstart:源对象开始被拖动 (2 ...
- HTML5 进阶系列:拖放 API 实现拖放排序
前言 HTML5 中提供了直接拖放的 API,极大的方便我们实现拖放效果,不需要去写一大堆的 js,只需要通过监听元素的拖放事件就能实现各种拖放功能. 想要拖放某个元素,必须设置该元素的 dragga ...
- HTML5 进阶系列:拖放 API 实现拖放排序(转载)
HTML5之拖放API实现拖放排序 前言 HTML5 中提供了直接拖放的 API,极大的方便我们实现拖放效果,不需要去写一大堆的 js,只需要通过监听元素的拖放事件就能实现各种拖放功能. 想要拖放某个 ...
- HTML5 十大新特性(七)——拖放API
拖放API是H5专门为了鼠标拖放而新提供了7个事件,可以分成三个部分来讲. 一.拖动的源对象(source)可以触发的事件 dragstart:拖动开始 drag:拖动进行中 dragend:拖动结束 ...
- HTML5_06之拖放API、Worker线程、Storage存储
1.拖放API中源对象与目标对象事件间的数据传递: ①创建全局变量--污染全局对象: var 全局变量=null; src.ondragstart=function(){ 全局变量=数据值; ...
- HTML5 Drop API
转自:http://www.cnblogs.com/fsjohnhuang/p/3961066.html 一.前言 在HTML4的时代,各前端工程师为了实现拖拽功能可说是煞费苦心,初听HTML5 ...
- HTML5 File API — 让前端操作文件变的可能
前言 在 HTML5 File API 出现之前,前端对于文件的操作是非常有局限性的,大多需要配合后端实现.出于安全角度考虑,从本地上传文件时,代码不可能获取文件在用户本地的地址,所以纯前端不可能完成 ...
随机推荐
- duang体加班版
领导第一次让我加班的时候,其实我是拒绝的,因为我觉着加班这个事,不能你让我加我就加,晚了就没有地铁了..领导跟我说可以打车报销.加了一个月之后,我的钱包duang~,后来我知道报销其实是假的,我每天打 ...
- Mac下搭建Eclipse Android开发环境
之前一直是用windows搞android开发,但windows这个性能也真是让人醉了,终于一狠心,砸锅卖铁买了Mac.然后就开始在Mac上搭建android开发环境, 其实也不麻烦,关键是找准下载地 ...
- tyvj P1952 Easy(递推+期望)
P1952 Easy 时间: 1000ms / 空间: 131072KiB / Java类名: Main 描述 某一天WJMZBMR在打osu~~~但是他太弱逼了,有些地方完全靠运气:(我们来简化一下 ...
- ITU-R BT.656 协议
ITU-R BT.601和ITU-R BT.656国际电信联盟(International Telecommunication Union)无线通信部门(ITU-R)制定的标准.严格来说,ITU-R ...
- tomcat 配置https (单向认证)
1.单向认证,就是传输的数据加密过了,但是不会校验客户端的来源 2.双向认证,如果客户端浏览器没有导入客户端证书,是访问不了web系统的,找不到地址 如果只是加密,单向就行 如果想要用系统的人没有证书 ...
- opencv学习笔记-图像叠加、混合
在图像处理中,目标区域定义为感兴趣区域ROI(region of Interest),这是后期图像处理的基础,在获取ROI后,进行一些列的处理.ROI区域在Opencv中就是Rect,先构建Rect, ...
- 【JAVA - 基础】之数据加密和解密
1.Base64工具类(可逆): import java.util.HashMap; import java.util.Map; /** * Base64加解密算法 * </p> * Ba ...
- 手把手教学:详解HTML5移动开发框架PhoneJS
摘要:HTML/JavaScript的优势自不必说,但却也并非完美,相比之下,原生App占内存更少.响应更快.本文详解了HTML5移动开发框架PhoneJS的使用全过程,通过它,能够让Web应用在移动 ...
- jQuery支持mobile的全屏水平横向翻页效果
这是一款支持移动手机mobile设备的jQuery全屏水平横向翻页效果插件. 该翻页插件能够使页面在水平方向上左右全屏翻动,它支持手机触摸屏,支持使用鼠标滚动页面. 整个页面过渡平滑,效果很不错. 在 ...
- 常用Content-type汇总
Content-Type,内容类型,用于定义网络文件的类型和网页的编码,决定浏览器将以什么形式.什么编码读取这个文件.这里汇总一下常用的,所有资料来源于网络,未经测试: 文件后缀 处理方式 .* ...