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的实现原理的模拟代码 -3 事件处理
Aug 03 Javascript
jquery 卷帘效果实现代码(不同方向)
Feb 05 Javascript
node.js中的fs.write方法使用说明
Dec 15 Javascript
JS+CSS实现的经典tab选项卡效果代码
Sep 16 Javascript
js制作支付倒计时页面
Oct 21 Javascript
用jQuery的AJax实现异步访问、异步加载
Nov 02 Javascript
12306 刷票脚本及稳固刷票脚本(防挂)
Jan 04 Javascript
详谈js遍历集合(Array,Map,Set)
Apr 06 Javascript
vue移动端轻量级的轮播组件实现代码
Jul 12 Javascript
AngularJS自定义表单验证功能实例详解
Aug 24 Javascript
判断js数据类型的函数实例详解
May 23 Javascript
OpenLayers3实现鼠标移动显示坐标
Sep 25 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
PHP之数组学习
2011/05/29 PHP
奇怪的PHP引用效率问题分析
2012/03/23 PHP
JavaScript高级程序设计
2006/12/29 Javascript
Knockout text绑定DOM的使用方法
2013/11/15 Javascript
B/S模式项目中常用的javascript汇总
2013/12/17 Javascript
使用jQuery不判断浏览器高度解决iframe自适应高度问题
2014/12/16 Javascript
js+html5实现canvas绘制镂空字体文本的方法
2015/06/05 Javascript
JS工作中的小贴士之”闭包“与事件委托的”阻止冒泡“
2016/06/16 Javascript
BootStrap组件之进度条的基本用法
2017/01/19 Javascript
Angular利用trackBy提升性能的方法
2018/01/26 Javascript
jQuery实现的简单日历组件定义与用法示例
2018/12/24 jQuery
js的各种数据类型判断的介绍
2019/01/19 Javascript
使用webpack搭建vue项目实现脚手架功能
2019/03/15 Javascript
[34:47]完美世界DOTA2联赛PWL S2 Magma vs LBZS 第一场 11.18
2020/11/18 DOTA
python在指定目录下查找gif文件的方法
2015/05/04 Python
python Socket之客户端和服务端握手详解
2017/09/18 Python
Django的分页器实例(paginator)
2017/12/01 Python
python 顺时针打印矩阵的超简洁代码
2018/11/14 Python
Python第三方Window模块文件的几种安装方法
2018/11/22 Python
Python实现KNN(K-近邻)算法的示例代码
2019/03/05 Python
Python中format()格式输出全解
2019/04/12 Python
详解Pandas之容易让人混淆的行选择和列选择
2019/07/10 Python
Python函数的定义方式与函数参数问题实例分析
2019/12/26 Python
详解Django3中直接添加Websockets方式
2020/02/12 Python
Django websocket原理及功能实现代码
2020/11/14 Python
The Hut美国/加拿大:英国领先的豪华在线百货商店
2019/03/26 全球购物
暑期实习鉴定
2013/12/16 职场文书
农民工工资支付承诺函
2014/03/31 职场文书
《老山界》教学反思
2014/04/08 职场文书
公司酒会致辞
2015/07/30 职场文书
巧用 -webkit-box-reflect 倒影实现各类动效(小结)
2021/04/22 HTML / CSS
Django migrate报错的解决方案
2021/05/20 Python
详解Java实践之抽象工厂模式
2021/06/18 Java/Android
Python Matplotlib库实现画局部图
2021/11/17 Python
JavaScript中document.activeELement焦点元素介绍
2021/11/27 Javascript
详解NumPy中的线性关系与数据修剪压缩
2022/05/25 Python