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的禁用右键、文本选择功能、复制按键的实现代码
Aug 27 Javascript
JS函数this的用法实例分析
Feb 05 Javascript
JavaScript正则表达式之multiline属性的应用
Jun 16 Javascript
Jquery 垂直多级手风琴菜单附源码下载
Nov 17 Javascript
JavaScript实现广告弹窗效果
Aug 09 Javascript
AngularJS之页面跳转Route实例代码
Mar 10 Javascript
详解vue的数据binding绑定原理
Apr 12 Javascript
angularjs实现搜索的关键字在正文中高亮出来
Jun 13 Javascript
Vue2.0实现调用摄像头进行拍照功能 exif.js实现图片上传功能
Apr 28 Javascript
详解webpack loader和plugin编写
Oct 12 Javascript
基于Vue2-Calendar改进的日历组件(含中文使用说明)
Apr 14 Javascript
微信小程序仿淘宝热搜词在搜索框中轮播功能
Jan 21 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中XMLHttpRequest(Ajax)不能设置自定义的Referer的解决方法
2011/11/26 PHP
提高PHP性能的编码技巧以及性能优化详细解析
2013/08/24 PHP
PHP中in_array函数使用的问题与解决办法
2016/09/11 PHP
jQuery.each()用法分享
2012/07/31 Javascript
javascript中的事件代理初探
2014/03/08 Javascript
jQuery中:nth-child选择器用法实例
2014/12/31 Javascript
JavaScript中字符串与Unicode编码互相转换的实现方法
2015/12/18 Javascript
NodeJS测试框架mocha入门教程
2017/03/28 NodeJs
微信小程序 实现点击添加移除class
2017/06/12 Javascript
for循环 + setTimeout 结合一些示例(前端面试题)
2017/08/30 Javascript
实时监控input框,实现输入框与下拉框联动的实例
2018/01/23 Javascript
深入了解响应式React Native Echarts组件
2019/05/29 Javascript
微信小程序登陆注册功能的实现代码
2019/12/10 Javascript
JS实现“全选”和"全不选"功能代码实例
2020/02/06 Javascript
javascript History对象原理解析
2020/02/17 Javascript
Vue动态加载图片在跨域时无法显示的问题及解决方法
2020/03/10 Javascript
js里面的变量范围分享
2020/07/18 Javascript
Vue中nprogress页面加载进度条的方法实现
2020/11/13 Javascript
python 简单备份文件脚本v1.0的实例
2017/11/06 Python
python3 打印输出字典中特定的某个key的方法示例
2019/07/06 Python
python第三方库学习笔记
2020/02/07 Python
python 错误处理 assert详解
2020/04/20 Python
Python pip install之SSL异常处理操作
2020/09/03 Python
python如何实现递归转非递归
2021/02/25 Python
基于PyTorch中view的用法说明
2021/03/03 Python
Baby Tulai澳大利亚:美国婴儿背带品牌
2018/10/15 全球购物
波兰化妆品和护肤品购物网站:eKobieca
2019/08/30 全球购物
中国电子产品批发商/跨境电商/外贸网:Sunsky-online
2020/04/20 全球购物
幼儿园校车司机的岗位职责
2014/01/30 职场文书
爱祖国演讲稿
2014/05/04 职场文书
体育之星事迹材料
2014/05/11 职场文书
运动会方阵口号
2014/06/07 职场文书
小英雄雨来观后感
2015/06/09 职场文书
西游记读书笔记
2015/06/25 职场文书
MySQL 分页查询的优化技巧
2021/05/12 MySQL
使用pycharm运行flask应用程序的详细教程
2021/06/07 Python