`

HTML5拖放功能的注意点

阅读更多
首先看如下代码
<!DOCTYPE HTML>
<html>
	<head>
		<style type="text/css">
			#div1 {width:200px;height:200px;padding:10px;border:1px solid #aaaaaa;}
		</style>
		<script type = "text/javascript">
			function allowDrop(ev){
				ev.preventDefault();
			}
			function drag(ev){
				ev.dataTransfer.setData("Text",ev.target.id);
			}
			function drop(ev){
				ev.preventDefault();
				var data = ev.dataTransfer.getData("Text");
				ev.target.appendChild(document.getElementById(data));
			}
		</script>
	</head>
	<body>
		<p>请把 W3School 的图片拖放到矩形中:</p>
		<div id = "div1" ondragover = "allowDrop(event)" ondrop = "drop(event)"></div> <br/> <br/><br/><br/><br/>
		<img id = "img1"src = "resource/9.jpg" ondragstart = "drag(event)" draggable = "true" /><br/>
	</body>
</html>

我在实现时犯了个错误:
缺少了<!DOCTYPE HTML>,那么这个<!DOCTYPE HTML>和类似的 <!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">有什么作用呢。
该标签可告知浏览器文档使用哪种 HTML 或 XHTML 规范。如果页面中没有他,就会用浏览器本身的解析标准,这样会造成页面在不同的浏览器(IE、火狐等)可能出现不同的显示效果。
而<!DOCTYPE HTML>是HTML5的解析标准,html5的doctype就是这样写的,并且现代浏览器都认识它。如果我们不使用它就使用了浏览器去解析这些HTML5标签,所以显然不能识别这些拖放操作,代码就不能正常工作了。可参考http://i.wanz.im/2010/05/28/why_doctype_html/

总结,如何实现拖放呢?一共有四个部分需要实现,第一对于图片设定其可拖放,第二,对于该图片,定义当元素被拖放后发生什么,往往是把该元素的id通过DHTML的dataTransfer属性的setData方法和一个类型进行绑定。等放置的时候就通过这个类型找到这个元素,随后把他当做子元素加入到拖放地中。第三,通过ondragover定义拖放到哪里,也就是标签中含有ondragover属性代表图片等可以被拖放到这里。第四,定义拖放最后的放置的函数。上面也说了,通过getData方法找到拖放的元素ID,然后调用XML DOM的添加节点的方法appendChild将拖放的元素放置在这里。
分享到:
评论

相关推荐

    html5文件拖放

    HTML5文件拖放功能是现代Web开发中的一个重要特性,它允许用户通过拖放操作在网页上上传或移动文件。这项技术极大地提升了用户体验,因为它简化了文件上传的过程,不再需要传统意义上的“浏览文件”按钮。在本篇博文...

    WEB开发 之 HTML 5 拖放.docx

    需要注意的是,不是所有浏览器都完全支持HTML5的拖放功能。Internet Explorer 9、Firefox、Opera 12、Chrome和Safari 5以上版本一般都支持,但某些特定版本可能有兼容性问题,例如Safari 5.1.2就不支持拖放。 在...

    &#40;HTML5程序设计及实践&#41;第5章HTML5拖放.ppt

    HTML5的拖放功能是一种强大的交互式特性,它允许用户在网页中直观地移动元素,如文件、文本或图片,增强了用户体验。本章主要讲解了HTML5中的拖放实现方式和涉及的关键对象`dataTransfer`。 拖放实现分为三个主要...

    Javascript拖放框架

    拖放功能的核心在于以下几点关键技术: 1. **数据Transfer对象**:在拖放过程中,数据Transfer对象存储了被拖动元素的信息。开发者可以使用`dataTransfer`属性设置或获取拖放数据,比如文本、图片或其他自定义数据...

    react-reactdndReact的拖放功能

    `react-dnd`通过监听浏览器的`dragstart`、`dragenter`、`dragleave`、`dragover`和`drop`等事件来实现拖放功能。它将这些事件的处理封装在高阶组件中,这样开发者无需直接处理这些底层事件,只需关注业务逻辑。 三...

    HTML5中实现拖放效果无须借助javascript.docx

    HTML5引入了一系列与拖放相关的API,使得开发者能够轻松地为网页元素添加拖放功能。这些API包括: - **`draggable` 属性**:这个属性用于定义元素是否可以被拖动。它接受三个值:`true`、`false` 和 `auto`。默认...

    HTML5应用开发技术-拖放概述.pptx

    HTML5应用开发技术的核心之一是拖放功能,它使得用户可以在网页上轻松地移动元素,提高了交互性。在HTML5中,拖放已经成为一个内置的标准,允许开发者无需过多依赖JavaScript库就能实现这一特性。以下是对HTML5拖放...

    HTML5应用开发技术-拖放元素.pptx

    总结起来,HTML5的拖放功能通过`ondragstart`、`ondragover`、`ondrop`等事件以及`dataTransfer`对象,使得开发者能够构建出丰富的交互式应用,让用户可以直接在网页上进行拖放操作,比如移动图片到指定位置,从而...

    html5移动端拖拽图片、拖拽标签等插件以及相应的demo、适用于手机网址开发和mui前端开发、h5app开发中的图片拖拽等

    综上所述,这个资源集合对于想要在移动端利用HTML5拖放功能的开发者来说是一份宝贵的参考资料,无论是手机网站开发还是H5应用,都可以从中受益。通过学习和实践提供的插件和示例,可以提升项目的用户体验,增强互动...

    html5 css3实现拖放(dragdrop)示例.docx

    总的来说,HTML5的拖放功能结合CSS3的样式控制,可以创造出丰富的用户界面,提升用户在网页上的交互体验。不过,需要注意的是,虽然大多数现代浏览器都支持这些特性,但在一些较旧的或者非主流的浏览器中可能无法...

    jQuery UI拖拽拖放插件jquery.top-droppable

    在Web开发中,交互性和用户体验至关重要,而拖放功能(Drag and Drop)是提升用户体验的一种有效方式。jQuery UI是一个强大的JavaScript库,提供了丰富的用户界面组件,其中包括拖放功能。`jquery.top-droppable` 是...

    vue 中基于html5 drag drap的拖放效果案例分析

    Vue.js 是一个流行的JavaScript框架,它允许开发者构建用户界面,并且可以与HTML, CSS 和 JavaScript一起工作。...这些知识点对于那些希望在Vue.js项目中添加拖放功能的开发者来说,是非常有用的学习资料。

    HTML5拖放效果的实现代码

    值得注意的是,尽管HTML5拖放API为开发者提供了实现拖放功能的标准方法,但还是有一些浏览器的兼容性问题需要关注。根据描述,Safari浏览器的早期版本(如Safari 5.1.2)不支持拖放功能。因此,在开发跨浏览器的网页...

    基于JavaScript 实现拖放功能

    以下将详细解析基于JavaScript实现拖放功能的知识点。 1. HTML的拖放API: HTML5提供了原生的拖放API,它依托于DOM事件模型,允许开发者注册事件监听器来捕捉拖放操作的过程中的各种事件。这些事件包括但不限于:...

    HTML5 拖放(Drag 和 Drop)详解与实例代码

    HTML5的拖放功能(Drag and Drop)是现代网页开发中的一个重要特性,它允许用户将元素从一个位置拖动到另一个位置,增强了交互性和用户体验。本文将深入探讨HTML5拖放的基本概念、如何使用以及浏览器的兼容性。 一...

    添加对移动设备上标准HTML5拖放操作的支持

    标题“添加对移动设备上标准HTML5拖放操作的支持”指出我们需要关注的是如何在触摸设备上实现HTML5的拖放功能。描述提到的“Polyfill在移动(触摸)设备上启用HTML5拖放支持”进一步明确了我们的目标是通过...

    js拖放特效.js拖放特效

    拖放功能主要基于HTML5的Drag and Drop API,该API提供了`dragstart`、`drag`、`dragenter`、`dragleave`、`dragover`和`drop`等事件,使得开发者可以监听并控制拖放过程中的各个阶段。通过这些事件,我们可以定义...

    拖拽 Draganddrop.html

    描述中的"博文链接:https://changsha-i9.iteye.com/blog/216918" 提示我们,这个实例可能是在一个博客文章中被讨论的,虽然具体的博客内容没有提供,但我们可以推测它可能涵盖了以下HTML5拖放功能的相关知识点: ...

    angularjs-html5-drag-and-drop:AngularJS HTML5 拖放

    AngularJS,作为一款强大的前端JavaScript框架,通过结合HTML5的拖放API,可以轻松实现动态、交互式的界面元素拖放功能。本篇将深入探讨如何在AngularJS中利用HTML5的拖放特性。 **1. AngularJS与HTML5的结合** ...

    jQuery+html5实现的3D焦点轮播幻灯片(html5zoo.js html5zoo-slides).zip

    HTML5是现代网页的标准,引入了许多新特性,如离线存储、拖放功能、媒体元素以及 canvas 和 svg 等图形处理技术。在3D焦点轮播幻灯片中,HTML5的canvas元素可以用于绘制3D场景,提供更流畅的动画效果;而新的数据...

Global site tag (gtag.js) - Google Analytics