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 相关文章推荐
关于js new Date() 出现NaN 的分析
Oct 23 Javascript
Javascript中string转date示例代码
Nov 01 Javascript
javascript实现仿腾讯游戏选择
May 14 Javascript
百度地图api如何使用
Aug 03 Javascript
一篇文章搞定JavaScript类型转换(面试常见)
Jan 21 Javascript
AngularJS实现页面定时刷新
Mar 14 Javascript
详解vue-router基本使用
Apr 18 Javascript
小程序组件之仿微信通讯录的实现代码
Sep 12 Javascript
详解mpvue开发微信小程序基础知识
Sep 23 Javascript
vue实现商城秒杀倒计时功能
Dec 12 Javascript
Jquery 获取相同NAME 或者id删除行操作
Aug 24 jQuery
JavaScript实现移动小精灵的案例代码
Dec 12 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
smarty静态实验表明,网络上是错的~呵呵
2006/11/25 PHP
php shell超强免杀、减少体积工具实现代码
2012/10/16 PHP
具有时效性的php加密解密函数代码
2013/06/19 PHP
用PHP代替JS玩转DOM的思路及示例代码
2014/06/15 PHP
详解PHP错误日志的获取方法
2015/07/20 PHP
YII框架中使用memcache的方法详解
2017/08/02 PHP
TP(thinkPHP)框架多层控制器和多级控制器的使用示例
2018/06/13 PHP
php中数组最简单的使用方法
2020/12/27 PHP
解决AJAX中跨域访问出现'没有权限'的错误
2008/08/20 Javascript
兼容FireFox 的 js 日历 支持时间的获取
2009/03/04 Javascript
JQuery 学习笔记01 JQuery初接触
2010/05/06 Javascript
jQuery中的bind绑定事件与文本框改变事件的临时解决方法
2010/08/13 Javascript
基于jQuery实现模拟页面加载进度条
2013/04/01 Javascript
Jquery网页出现的乱码问题的三种解决方法
2013/06/30 Javascript
Javascript中浮点数相乘的一个解决方法
2014/06/03 Javascript
jquery实现华丽的可折角广告代码
2015/09/02 Javascript
win7下安装配置node.js+express开发环境
2015/12/06 Javascript
JavaScript编写检测用户所使用的浏览器的代码示例
2016/05/05 Javascript
浅谈JS如何实现真正的对象常量
2017/06/25 Javascript
jquery 插件重新绑定的处理方法分析
2019/11/23 jQuery
es6函数之rest参数用法实例分析
2020/04/18 Javascript
Vant picker 多级联动操作
2020/11/02 Javascript
Python的print用法示例
2014/02/11 Python
Python连接MySQL并使用fetchall()方法过滤特殊字符
2016/03/13 Python
python list排序的两种方法及实例讲解
2017/03/20 Python
python读取csv文件并把文件放入一个list中的实例讲解
2018/04/27 Python
python分块读取大数据,避免内存不足的方法
2018/12/10 Python
使用Python制作简单的小程序IP查看器功能
2019/04/16 Python
40个你可能不知道的Python技巧附代码
2020/01/29 Python
Python装饰器实现方法及应用场景详解
2020/03/26 Python
如何用PyPy让你的Python代码运行得更快
2020/12/02 Python
HTML5未来发展趋势
2016/02/01 HTML / CSS
创新型城市实施方案
2014/03/06 职场文书
文秘班元旦晚会活动策划方案
2014/08/28 职场文书
2014年营销工作总结
2014/11/22 职场文书
在js中修改html body的样式
2021/11/11 Javascript