html5 拖放---(二)转

draggable是一个枚举属性,用于指定一个标签是否可以被拖拽。有以下四种取值:

true 表示此元素可拖拽
false 表示此元素不可拖拽
auto img和带href的标签a标签表示可拖拽外,其它标签均表示不可拖拽
其它任何值 表示不可拖拽

事件:

【被拖拽元素】

ondragstart 拖拽前触发(鼠标按下并开始拖拽)
ondrag            拖拽过程中触发(连续出发,即使鼠标不移动也会连续触发)
ondragend      拖拽结束触发

【目标元素】

ondragenter   进入目标元素
ondragover    
ondrop 释放鼠标瞬间触发
ondragleave   鼠标离开目标元素触发

整个拖拽过程事件顺序:

ondragstart   — ondrag — ondragenter — ondragover — ondragleave/ondrop — ondragend

注:1.  若想触发ondrop事件,ondragover 中需要阻止默认事件(元素默认是不允许放置的)。

2.  在Firefox 3.5+中,如果是把图像拖放到放置目标上,页面就会转向图像文件;而如果是把文本拖放到放置目标上,则会导致无效URL错误,因此,为了让Firefox支持正常的拖放,还要取消drop事件的默认行为,阻止它打开URL。

关于event.dataTransfer

setData(key,value) 两个参数都是字符串类型
getData(key) getData()可以取得由setData()保存的值
effectAllowed
设置光标样式(none, copy, copyLink, copyMove, link, linkMove, move, all 和 uninitialized)  ;

事件 ondragstart中设置

setDragImage(element, x, y)
指定一副图像,当拖动发生时,显示在光标下方。这个方法接受的三个参数分别是要显示的HTML元素和光标在图像中的x、y坐标。

其中,HTML元素(可以是隐藏的元素)可以是一副图像,也可以是其它元素。是图像则显示图像,是其它元素则显示渲染后的元素。

实现这个方法的浏览器有Firefox 3.5+、Safari 4+ 和 Chorme

files
获取外部拖拽文件的一个类似数组的集合(length)。集合中每个元素有type属性,依次判断拖拽的文件类型。

实现这个属性的浏览器有IE10+、Firefox 3.5+和Chrome。

注:只能在拖放事件的事件处理程序中访问dataTransfer对象。

保存在dataTransfer对象中的数据只能在【目标元素】事件处理程序中读取。

关于FileReader(读取文件信息)

readAsDataURL        
参数为要读取的文件对象,将文件读取为DataUrl
onLoad                          
 读取成功完成时触发此事件,this.result 获取读取的文件数据,如果是图片,将返回base64格式的图片数据

例:

var fd=new FileReader();
fd.readAsDataURL(fs[0]);  //fs为event.dataTransfer.files获得的集合
fd.onLoad=function(){
   alert(this.result)
}  

一个完整的实例(拖拽上传预览):

<html>
<head>
    <title></title>
    <style>
        * {
            padding: 0px;
            margin: 0px;
        }

        #oDiv1 {
            width: 300px;
            height: 300px;
            border: 1px solid #000;
        }
    </style>
</head>
<body>
    <div id="oDiv1"></div>
    <script>

        var oDiv1 = document.getElementById("oDiv1");
        var oDiv2 = document.getElementById("oDiv2");

        oDiv1.ondragenter = function (ev) {
            this.style.borderStyle = "dashed";
        }
        oDiv1.ondrop = function (ev) {
            var files = ev.dataTransfer.files;
            for (var i = 0, f; f = files[i]; i++) {
                var reader = new FileReader();
                reader.onload = (function (f) {
                    return function () {
                        oDiv1.innerHTML = ‘<img src="‘ + this.result + ‘" title="‘ + f.name + ‘" width="100%"  />‘;
                    }
                })(f)
                //(function(f){reader.onload = function (ev) {
                //    oDiv1.innerHTML = ‘<img src="‘ + ev.target.result + ‘" title="‘ + f.name + ‘" width="100%" height="100%" />‘;
                //}})(f)
                reader.readAsDataURL(f);
            }
            this.style.borderStyle = "solid";
            ev.stopPropagation();
            ev.preventDefault();
        }
        oDiv1.ondragover = function (ev) {
            ev.stopPropagation();
            ev.preventDefault();
        }
        oDiv1.ondragleave = function (ev) {
            this.style.borderStyle = "solid";
        }
    </script>
</body>
</html>  

时间: 2024-08-25 05:01:55

html5 拖放---(二)转的相关文章

使用PhoneGap开发基于Html5应用二:第一个PhoneGap应用:百度

上一篇博文使用PhoneGap开发基于Html5应用一:PhoneGap简介 中我介绍了如何从phonegap官网上下载源码并启动第一个应用,今天我们把phonegap的应用稍微改一下,让他实现几个比较牛叉的功能: 1.启动一个网页 2.启动摄像头 3.启动定位 老规矩,在实现这几个功能之前我们先讲一下原理性的东西: 首先我们先回顾一下上次说的,其实phonegap应用中有个特别的webview,它就是CDVViewController,关于这个类我们后面再详细描述,现在我们先了解这个类到底做了

玩转html5(二)----用canvas结合脚本在画布上画简单的图(html5又一强大功能)

在html5中可以使用canvas标签在画布上画图,先直接上代码,这篇文章先简单介绍一下canvas的使用方法,简单画几个圆,矩形,三角形,写字. 在代码中均给出了注释,在这里特别强调的一点是:使用canvas画图时有时候必须beginPath和colsePath,但有时不需要,为了防止出现问题,可以在每次重新画一个图时重新开启路径,画完后关闭路径. 这些代码是在猎豹浏览器上实现的,有些浏览器可能不支持. <!DOCTYPE html> <meta charset="utf-8

HTML5 拖放(Drag 和 Drop)功能开发——基础实战

随着HTML5的普及度越来越高,现在写代码也遇到一些了,经过同事的点播开展了一次Dojo活动用以技术交流,我也乘此机会将HTML5的拖放功能整理了一下. 简介 拖拽(Drag/Drop)是个非常普遍的功能.在生活中,拖放物品其实是相当常见的一个动作.标榜“互联网生活尖凿狮”的程序猿也在一直试图用鼠标模拟出“手”的操作,用来给用户以更好的体验,你可以抓住一个对象,并且拖动到你想放置的区域.很多javascript都类似实现了相关的功能,例如,jQueryUI的draganddrop组件,比如<JS

HTML5——拖放

HTML5拖放 1.HTML5拖放 拖放(Drag和drop)是HTML5标准的组成部分. 2.拖动开始: ondragstart:调用了一个函数,drag(event),它规定了被拖动的数据 3.设置拖动数据 setData():设置被拖数据的数据类型和值. 4.放入位置: ondragover:事件规定在何处放置被拖动的数据. 5.放置: ondrop:当放置被拖放数据时,会发生drop事件 总结: 在拖动目标上触发事件(源元素): ondragstart:用户开始拖动元素时触发 ondra

HTML5系列二(标签元素、FileReader、拖放)

nav元素的使用场合 aside元素的使用场合 aside元素主要有以下两种使用方法: 1.被包含在article中作为主要内容的附属信息部分,其中的内容可以是与当前文章有关的参考资料.名词解释等 2.在article元素之外使用,作为页面或站点全局的附属信息部分 html5细节概述 1.一个网页内并未限制header元素的个数,可以拥有多个,也可以为每个内容区块加一个header元素(footer同理) 2.autofocus:一个页面上只能有一个控件具有该属性 3.pattern属性:要求输

HTML5 拖放(Drag 和 Drop)

一.定义 拖放是一种常见的特性,即抓取对象以后拖到另一个位置.在 HTML5 中,拖放是标准的一部分,任何元素都能够拖放. Internet Explorer 9+, Firefox, Opera, Chrome, 和 Safari 支持拖动.Safari 5.1.2不支持拖动 二.使用 设置元素为可拖放:为了使元素可拖动,把 draggable 属性设置为 true 拖动什么 :ondragstart 和 setData( ),其中ondragstart 它规定了被拖动的数据.setData(

HTML5拖放

拖放(drag和drop)是html5标准组成,下面我们从五个方面对其进行叙述,分别是如何成为拖动物体,如何成为拖动目标,拖动物体上拥有的事件,拖动目标上拥有的事件以及拖放物体间如何传递信息. 拖动物体上拥有的事件 dragstart (在物体刚被拖动时触发) drag (在dragstart事件触发之后就被触发) dragend (拖动事件结束时触发) 拖动目标上拥有的事件 dragenter (当拖拽元素进入放置目标时触发) dragover (当拖拽元素在放置目标中移动时触发,类似于mou

HTML5拖放API

拖放 拖放是一种常见的特性,即抓取对象以后拖到另一个位置. 在 HTML5 中,拖放是标准的一部分,任何元素都能够拖放. 浏览器支持 Internet Explorer 9.Firefox.Opera 12.Chrome 以及 Safari 5 支持拖放. 注释:在 Safari 5.1.2 中不支持拖放. 拖放步骤 1.对象元素的draggable属性设置为true(draggable="true").还需要注意的是a元素和img元素必须指定href.dragstart 被拖放的元素

HTML5拖放API2

在HTML5中,已经支持在浏览器与其他应用程序之间的数据互相拖动,同时也大大简化了有关于拖放方面的代码. 实现拖放的步骤 在HTML5中要想实现拖放操作,至少要经过两个步骤: 将想要拖放的对象元素的draggable属性设为true(draggable="true").这样才能将该元素进行拖放.另外,img元素和a元素(必须指定href属性)默认允许拖放. 编写与拖放有关的事件处理代码.关于拖放存在的几个事件如下所示. 拖放的相关事件 事件 产生事件的元素 描述 dragstart 被