互联网技术总是在向强大、便捷发展,怎样使用这些层出不穷的技术来改善我们的既有设计,是很能检验开发人员想象力和创造力的。
一个引子:
因为要搜索电影的字幕,打开了http://www.shooter.cn,发现可以直接拖动文件到搜索栏,这是HTML5支持的功能,用在这里能够很好的提升搜索效率,避免用户手动输入电影名,也能够提升搜索结果的准确度。
有篇文章介绍了Drag&Drop功能,http://javascript.ruanyifeng.com/dom/dragndrop.html,mark一下
1、html元素可拖动
<div draggable="true">Draggable Div</div>
2、拖动事件
dragstart:网页元素开始拖动时触发。 drag:被拖动的元素在拖动过程中持续触发。 dragenter:被拖动的元素进入目标元素时触发,应在目标元素监听该事件。 dragleave:被拖动的元素离开目标元素时触发,应在目标元素监听该事件。 dragover:被拖动元素停留在目标元素之中时持续触发,应在目标元素监听该事件。 drop:被拖动元素或从文件系统选中的文件,拖放落下时触发。 dragend:网页元素拖动结束时触发。
draggableElement.addEventListener('dragstart', function(e) { console.log('拖动开始!'); });
3、dataTransfer对象:拖动相关的各种信息
draggableElement.addEventListener('dragstart', function(event) { event.dataTransfer.setData('aa', 'test abc'); });
dropEffect: 拖放的操作类型,决定了浏览器如何显示鼠标形状,可能的值为 copy、move、link 和 none。 effectAllowed:指定所允许的操作,可能的值为 copy、move、link、copyLink、copyMove、linkMove、all、none 和 uninitialized(默认值,等同于all,即允许一切操作)。 files:包含一个FileList对象,表示拖放所涉及的文件,主要用于处理从文件系统拖入浏览器的文件。 types:储存在DataTransfer对象的数据的类型。
setData(format, data):在dataTransfer对象上储存数据。第一个参数format用来指定储存的数据类型,比如text、url、text/html等。 getData(format):从dataTransfer对象取出数据。 clearData(format):清除dataTransfer对象所储存的数据。如果指定了format参数,则只清除该格式的数据,否则清除所有数据。 setDragImage(imgElement, x, y):指定拖动过程中显示的图像。默认情况下,许多浏览器显示一个被拖动元素的半透明版本。参数imgElement必须是一个图像元素,而不是指向图像的路径,参数x和y表示图像相对于鼠标的位置。
4、实例:拖动元素、文件,参考附件
5、FileReader:用来把文件读入内存,并且读取文件中的数据。
readAsBinaryString(file) //将文件读取二进制码,通常我们将它传送到后端,后端可以通过这段字符串存储文件 readAsText(file,[encoding]) //将文件读取文本,第二个参数是文本的编码方式,默认UTF-8 readAsDataURL(file) //将文件读取为一串Data URL字符串,将小文件以一种特殊格式的URL地址直接读入页面。小文件指图像与html等格式的文件 abort() //中断读取操作
onabort //数据读取中断时触发 onerror //数据读取出错时触发 onloadstart //数据读取开始时触发 onprocess //数据读取中 onload //数据读取成功完成时触发 onloadend //数据读取完成时触发,无论成功失败
name、lastModifiedDate、type、size
6、总结:上面所有东西都包含在http://bgrins.github.io/filereader.js/#,https://github.com/bgrins/filereader.js,filereader.js集大成者,还提供了很实用的功能,从剪贴板复制图片到网页上,比选中文件方便100倍啊!!!结合jQuery还可以实现粘贴上传功能,参考http://blog.bingo929.com/renren-drag-drop-photo-filereader-formdata.html,http://blog.csdn.net/fdipzone/article/details/37974511
相关推荐
标题中的“一个很不错的drag & drop”指的是使用拖放(Drag & Drop)技术的一个应用程序或功能,这在网页设计和开发中非常常见。拖放功能允许用户通过鼠标将元素从一处拖到另一处,实现数据的移动、拷贝或者进行其他...
在Web开发中,HTML5引入了`Drag and Drop` API,使得在浏览器中实现拖放操作变得更加简单和标准化。 在JavaScript虚拟机2(JSVM2)环境中,拖放功能的实现通常涉及到以下关键步骤: 1. **事件监听**:设置`...
"Drag & Drop-crx插件"是一个专门设计用于优化文件上传流程的浏览器扩展程序,尤其适用于在BPO(Business Process Outsourcing)环境中操作的用户。这个插件的主要功能是简化从本地计算机到特定在线系统的文件拖放...
文件拖放技术的核心在于HTML5中的Drag and Drop API,这是一个强大的功能,使得Web应用能够支持用户以直观的方式进行文件操作。在IE中,这个功能的实现需要考虑浏览器的兼容性和特定的API调用。 在"DragandDrop....
综上所述,“Draganddrop.html”示例是一个关于如何利用HTML5的拖放API创建交互式Web应用的实践案例。通过阅读和分析源码,我们可以深入理解拖放功能的工作原理,以及如何将其应用于实际项目中。
drag&drop是HTML5提供的一个强大的功能,允许用户通过鼠标或触控设备抓取元素并将其放置到其他位置,这在创建互动应用如拼图游戏时非常有用。在实现过程中,开发者可能使用了`<draggable>`属性标记可拖动的元素,并...
在JavaScript的世界里,MooTools是一个轻量级且强大的库,它提供了许多实用的功能,包括对DOM操作、事件处理、动画效果以及高级功能如拖放(Drag & Drop)。本篇文章将详细探讨如何利用MooTools 1.2.1版本实现拖拽...
首先,我们需要了解HTML5中提供了拖放API(Drag and Drop API),使得在浏览器环境中实现拖放功能成为可能。这个API包括了`dragstart`、`drag`、`dragenter`、`dragleave`、`dragover`、`drop`等一系列事件,以及`...
在这个“Drag and Drop using Javascript.zip”压缩包中,可能包含了一个使用HTML5和JavaScript实现的拖放示例。 在JavaScript中,HTML5的拖放API提供了对拖放行为的支持,使得开发者能够轻松地创建具有拖放功能的...
【标题】:“DRAG-DROP_TPSCRPT:具有打字稿和简单CSS的DRAG _&_ DROP应用”指的是一个利用TypeScript(打字稿)和CSS(层叠样式表)技术实现的拖放(DRAG & DROP)应用程序。在前端开发中,拖放功能是一种常见的...
《Angular Drag & Drop技术详解》 Angular是一款由Google维护的前端JavaScript框架,它以其模块化、可维护性和强大的数据绑定功能而备受开发者喜爱。在Angular应用中,拖放(Drag & Drop)功能是一项常见的交互需求...
在提供的压缩包文件"DW拖拽(drag drop)的例子"中,可能包含了一些实际的Dreamweaver项目文件,例如HTML文件、CSS文件、JavaScript文件等,这些文件可以用来学习和实践如何在Dreamweaver中实现拖拽功能。...
HTML5 Drag and Drop是Web开发中的一个重要特性,它允许用户通过简单的拖放操作在网页上移动元素,大大提升了用户体验。这个特性结合JavaScript可以创建出许多交互式的应用,比如文件上传、图片预览、数据交换等。...
总的来说,"基于html5 drag api实现的vue树形拖拽组件"是一个将HTML5拖放API与Vue.js组件化思想相结合的实践案例,它展示了如何利用现代Web技术创建出功能丰富的交互式用户界面。开发者可以在此基础上学习如何处理...
在 Quasar 中,`quasar-drag-drop` 组件是基于 HTML5 的拖放 API 设计的,这个 API 提供了处理拖放事件的能力,使得用户可以方便地在页面元素之间拖放文件。首先,你需要在项目中安装 Quasar UI 包,通过 npm 或 ...
拖拽功能则是通过HTML5的Drag and Drop API来实现的,这个API提供了`dragstart`、`dragenter`、`dragleave`、`dragover`和`drop`等事件,使得元素可以被拖动并放置到其他可接受的区域。 首先,我们来看看Vue.js中的...