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中ajax学习笔记一
Oct 16 Javascript
js判断FCKeditor内容是否为空的两种形式
May 14 Javascript
js四舍五入数学函数round使用实例
May 09 Javascript
JS简单实现禁止访问某个页面的方法
Sep 13 Javascript
解决ztree搜索中多级菜单展示不全问题
Jul 05 Javascript
node中Express 动态设置端口的方法
Aug 04 Javascript
js 奇葩技巧之隐藏代码
Aug 11 Javascript
基于vue-cli vue-router搭建底部导航栏移动前端项目
Feb 28 Javascript
AngularJS自定义过滤器用法经典实例总结
May 17 Javascript
产制造追溯系统之通过微信小程序实现移动端报表平台
Jun 03 Javascript
js实现全选和全不选
Jul 28 Javascript
JQuery基于FormData异步提交数据文件
Sep 01 jQuery
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
文件上传的实现
2006/10/09 PHP
php利用iframe实现无刷新文件上传功能的代码
2011/09/29 PHP
Yii统计不同类型邮箱数量的方法
2016/10/18 PHP
php mysql数据库操作类(实例讲解)
2017/08/06 PHP
[JS]点出统计器
2020/10/11 Javascript
javascript开发技术大全-第3章 js数据类型
2011/07/03 Javascript
Chosen 基于jquery的选择框插件使用方法
2012/05/30 Javascript
js switch case default 的用法示例介绍
2013/10/23 Javascript
js实现网页自动刷新可制作节日倒计时效果
2014/05/27 Javascript
JavaScript实现简单图片翻转的方法
2015/04/17 Javascript
jQuery实现的精美平滑二级下拉菜单效果代码
2016/03/28 Javascript
bootstrap modal弹出框的垂直居中
2016/12/14 Javascript
vue 2.0路由之路由嵌套示例详解
2017/05/08 Javascript
详解vue-router 2.0 常用基础知识点之导航钩子
2017/05/10 Javascript
Node.js利用断言模块assert进行单元测试的方法
2017/09/28 Javascript
React Form组件的实现封装杂谈
2018/05/07 Javascript
对python中的装包与解包实例详解
2019/08/24 Python
Python yield生成器和return对比代码实例
2020/04/20 Python
Python‘==‘ 及 ‘is‘相关原理解析
2020/09/05 Python
PacSun官网:加州生活方式服装、鞋子和配饰
2018/03/10 全球购物
Perfume’s Club澳大利亚官网:西班牙领先的在线美容店
2021/02/01 全球购物
暑假实习求职信范文
2013/09/22 职场文书
会计电算化专业应届大学生求职信
2013/10/22 职场文书
初三化学教学反思
2014/01/23 职场文书
大专生毕业的自我评价
2014/02/06 职场文书
《小猪家的桃花树》教学反思
2014/04/11 职场文书
销售求职信范文
2014/05/26 职场文书
物理学专业自荐信
2014/06/11 职场文书
师范类求职信
2014/06/21 职场文书
与美同行演讲稿
2014/09/13 职场文书
2014年社区国庆节活动方案
2014/09/16 职场文书
关于成绩下滑的自我检讨书
2014/09/20 职场文书
逃课打麻将检讨书
2014/10/05 职场文书
详细谈谈MYSQL中的COLLATE是什么
2021/06/11 MySQL
mybatis中注解与xml配置的对应关系和对比分析
2021/08/04 Java/Android
P站美图推荐——变身女主角特辑
2022/03/20 日漫