javascript 可以拖动的DIV(二)


Posted in Javascript onJune 26, 2009

function beginDrag(elementToDrag,event)
{
var =event.clientX-parseInt(elementToDrag.style.left);
var deltaY=event.clientY-parseInt(elementToDrag.style.top);
//这儿的deltaX/Y实际上就是得出鼠标和div的坐标差。
if(document.addEventListener)
//之所以在这儿加这样一个判断,是因为IE6和firefox对于javascript的事件处理有不同的方法(IE7之后的版本开始符合W3C的标准)。
//document.addEventlistener如果是true的话,那就是firefox等支持W3C DOM标准的浏览器,IE6中注册事件用attachEvent,而firefox等浏览器则是用addEventListener,语法如下所示。addEventListener函数的true参数表示可以捕捉事件。
{
document.addEventListener("mousemove",moveHandler,true);
document.addEventListener("mouseup",upHandler,true);
//document.addEventListener("mouseout",upHandler,true);
}
else if(document.attachEvent)
{
document.attachEvent("onmousemove",moveHandler);
document.attachEvent("onmouseup",upHandler);
//document.attachEvent("onmouseout",upHandler);
}
if(event.stopPropagation) event.stopPropagation();
else event.cancelBubble=true;
//这儿的判断依然是考虑了不同的浏览器,stopPropagation是W3C DOM标准中使用的一个方法,用来取消事件的传播。我们使用了document.addEventListener这个方法,浏览器会从document对象沿着DOM节点向下传播到目标节点,注册的事件处理程序就会运行,然后事件会回传到父节点,如果父节点也有相应的事件处理程序,那么事件也会处理,为了避免这种情况,我们可以用stopPropagation来阻止事件的传播,这个方法的作用就是让其他元素对这个事件不可见。在IE6下,并没有元素捕捉事件的过程,不过有这个术语叫做起泡的过程,IE6中所用的方法就是cancelBubble,用来取消起泡,表示这个事件已被处理,其他元素不用再看见了。
if(event.preventDefault) event.preventDefault();
else event.returnValue=false;
//这儿的preventDefault用来通知浏览器不要执行与事件关联的默认动作,returnValue用来取消发生事件的源元素的默认动作,大家应该能看出这是在不同浏览器下发挥相同的作用。
//以下就是拖动div中所用的关键函数了。
function moveHandler(e)
{

if (!e) e=window.event; //如果是IE的事件对象,那么就用window.event

//全局属性,否则就用DOM二级标准的Event对象。
//在IE中,event是window的一个属性,也就是一个全局变量,但是在W3C DOM中,event是发生事件的文档对象的属性。在这个程序中,event是什么并不重要,关键是我们要取得鼠标的坐标值,在IE中,e这个参数传进来的时候,IE认不出来,所以我们就给e赋值为window.event。
elementToDrag.style.left=(e.clientX-deltaX)+"px";
elementToDrag.style.top=(e.clientY-deltaY)+"px";
//这儿就是改变现在正在作用的div的left和top属性。
if(e.stopPropagation) e.stopPropagation();
else e.cancelBubble=true;
}
function upHandler(e)
{
if(document.removeEventListener)
{
document.removeEventListener("mouseup",upHandler,true);
document.removeEventListener("mousemove",moveHandler,true);
}
else
{
document.detachEvent("onmouseup",upHandler);
document.detachEvent("onmousemove",moveHandler);
}
//这个函数是用来移除侦听器,比较简单,就不详细说了。
if (!e) e=window.event;
if(e.stopPropagation) e.stopPropagation();
else e.cancelBubble=true;
}
}
三水点靠木 编辑注:如果不能正常运行 注意字符的替换,因为好多网站为了安装都将字符转换成了中文下的标点符号。本站也尽量的替换。

Javascript 相关文章推荐
jquery keypress,keyup,onpropertychange键盘事件
Jun 25 Javascript
键盘上一张下一张兼容IE/google/firefox等浏览器
Jan 28 Javascript
Javascript 赋值机制详解
Nov 23 Javascript
jQuery元素选择器用法实例
Dec 23 Javascript
javascript设计模式--策略模式之输入验证
Nov 27 Javascript
jQuery条件分页 代替离线查询(附代码)
Aug 17 jQuery
JavaScript实现的数字与字符串转换功能示例
Aug 23 Javascript
详解Ant Design of React的安装和使用方法
Dec 27 Javascript
用Fundebug插件记录网络请求异常的方法
Feb 21 Javascript
angular 实现同步验证器跨字段验证的方法
Apr 11 Javascript
vue实现后台管理权限系统及顶栏三级菜单显示功能
Jun 19 Javascript
Android 自定义view仿微信相机单击拍照长按录视频按钮
Jul 19 Javascript
jQuery 可以拖动的div实现代码 脚本之家修正版
Jun 26 #Javascript
JQuery 国际象棋棋盘 实现代码
Jun 26 #Javascript
javascript 读取图片文件的大小
Jun 25 #Javascript
JQuery 入门实例1
Jun 25 #Javascript
JavaScript 开发中规范性的一点感想
Jun 23 #Javascript
jQuery 表单验证插件formValidation实现个性化错误提示
Jun 23 #Javascript
一个很酷的拖动层的js类,兼容IE及Firefox
Jun 23 #Javascript
You might like
怎么使 Mysql 数据同步
2006/10/09 PHP
PHP防止表单重复提交的几种常用方法汇总
2014/08/19 PHP
php实现读取和写入tab分割的文件
2015/06/01 PHP
使用PHP处理数据库数据如何将数据返回客户端并显示当前状态
2016/02/16 PHP
laravel 解决groupBy时出现的错误 isn't in Group By问题
2019/10/17 PHP
Mac系统下搭建Nginx+php-fpm实例讲解
2020/12/15 PHP
jMessageBox 基于jQuery的窗口插件
2009/12/09 Javascript
JQuery 动态扩展对象之另类视角
2010/05/25 Javascript
JavaScript内核之基本概念
2011/10/21 Javascript
js多级树形弹出一个小窗口层(非常好用)实例代码
2013/03/19 Javascript
jquery中常用的SET和GET$(”#msg”).html循环介绍
2013/10/09 Javascript
JS特效实现图片自动播放并可控的效果
2015/07/31 Javascript
jQuery实现只允许输入数字和小数点的方法
2016/03/02 Javascript
老生常谈onBlur事件与onfocus事件(js)
2016/07/09 Javascript
jQuery 全选 全部选 反选 实现代码
2016/08/17 Javascript
使用原生的javascript来实现轮播图
2017/02/24 Javascript
jQuery插件HighCharts绘制的基本折线图效果示例【附demo源码下载】
2017/03/07 Javascript
从零开始学习Node.js系列教程二:文本提交与显示方法
2017/04/13 Javascript
webpack多入口文件页面打包配置详解
2018/01/09 Javascript
js设置默认时间跨度过程详解
2019/07/17 Javascript
Node.js实现批量下载图片简单操作示例
2020/01/18 Javascript
Python2中的raw_input() 与 input()
2015/06/12 Python
Python基于列表模拟堆栈和队列功能示例
2018/01/05 Python
Django后台管理系统的图文使用教学
2020/01/20 Python
python 常见的反爬虫策略
2020/09/27 Python
Django ModelForm组件原理及用法详解
2020/10/12 Python
使用Html5多媒体实现微信语音功能
2019/07/26 HTML / CSS
新闻专业大学生找工作的自我评价
2013/10/30 职场文书
信息系统专业个人求职信范文
2013/12/07 职场文书
初中英语演讲稿
2014/04/29 职场文书
项目投资合作意向书
2014/07/29 职场文书
教师节主持词开场白
2015/05/29 职场文书
亲情作文之母爱
2019/09/25 职场文书
golang 实现对Map进行键值自定义排序
2021/04/28 Golang
Python机器学习应用之工业蒸汽数据分析篇详解
2022/01/18 Python
Win11 PC上的Outlook搜索错误怎么办?
2022/07/15 数码科技