JavaScript实现网页对象拖放功能的方法


Posted in Javascript onApril 15, 2015

本文实例讲述了JavaScript实现网页对象拖放功能的方法。分享给大家供大家参考。具体如下:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Drag</title>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<style>
#myDiv{width:50px; height:50px; background-color:red}
</style>
</head>
<body>
<div id="myDiv"></div>
</body>
<script type="text/javascript">
 var isIE = document.all ? true : false;
 //判断是否是IE浏览器
 function addEventHandler(oTarget, sEventType, fnHandler){
 //添加事件
 if(oTarget.addEventListener){
 oTarget.addEventListener(sEventType, fnHandler, false);
 }else if(oTarget.attachEvent){
 oTarget.attachEvent("on" + sEventType, fnHandler);
 }else{
 oTarget["on" + sEventType] = fnHandler;
 }
 }
 function removeEventHandler(oTarget, sEventType, fnHandler) {
 //移除事件
 if (oTarget.removeEventListener) {
 oTarget.removeEventListener(sEventType, fnHandler, false);
 } else if (oTarget.detachEvent) {
 oTarget.detachEvent("on" + sEventType, fnHandler);
 } else {
 oTarget["on" + sEventType] = null;
 }
 }
 var BindAsEventListener = function(object, fun) {
 //以另一个对象替换当前对象
 return function(event) {
 return fun.call(object, (event || window.event));
 }
 }
 var $ = function(id){
 return document.getElementById(id);
 }
 var Class = {
 create: function() {
 return function() {this.initialize.apply(this, arguments);}
 }
 }
 var drag = Class.create();
 drag.prototype = {
 initialize: function(id){//初始化
 this._drag = $(id);
 this._flag = false;
 addEventHandler(this._drag,'mousedown',BindAsEventListener(this,this.start));
 this._fM = BindAsEventListener(this, this.move);
 this._fS = BindAsEventListener(this, this.stop);
 this._drag.style.position = "absolute";
 },
 start: function(oEvent){//相当于onmousedown事件
 //return this._name;
 this._x = oEvent.clientX - this._drag.offsetLeft;
 this._y = oEvent.clientY - this._drag.offsetTop;
 addEventHandler(document, 'mousemove', this._fM);
 addEventHandler(document, 'mouseup', this._fS);
 if(isIE){
  addEventHandler(this._drag, "losecapture", this._fS);
 //焦点丢失
  this._Handle.setCapture();//设置鼠标捕获
 }else{
  addEventHandler(window, "blur", this._fS);//焦点丢失
  oEvent.preventDefault();//阻止默认动作
 }
 },
 move: function(oEvent){ //相当于onmonusemove事件
 this._drag.style.left = oEvent.clientX - this._x + "px";
 this._drag.style.top = oEvent.clientY - this._y + "px";
 },
 stop: function(){ //相当于onmouseup事件
 removeEventHandler(document, 'mousemove', this._fM);
 removeEventHandler(document, 'mouseup', this._fS);
 if(isIE){
  removeEventHandler(this._drag, "losecapture", this._fS);
  this._Handle.releaseCapture();
 }else{
  removeEventHandler(window, "blur", this._fS);
 }
 }
 }
 var ndrag = new drag("myDiv");
</script>
</html>

希望本文所述对大家的javascript程序设计有所帮助。

Javascript 相关文章推荐
json2.js的初步学习与了解
Oct 06 Javascript
iframe跨域通信封装详解
Aug 11 Javascript
基于jquery实现ajax无刷新评论
Aug 19 Javascript
jQuery事件详解
Feb 23 Javascript
Easy UI动态树点击文字实现展开关闭功能
Sep 30 Javascript
Angular实现预加载延迟模块的示例
Oct 12 Javascript
layer弹出层 iframe层去掉滚动条的实例代码
Aug 17 Javascript
使用electron将vue-cli项目打包成exe的方法
Sep 29 Javascript
详解vue使用$http服务端收不到参数
Apr 19 Javascript
微信小程序实现滑动翻页效果(完整代码)
Dec 06 Javascript
JavaScript实现手机号码 3-4-4格式并控制新增和删除时光标的位置
Jun 02 Javascript
vue-video-player实现实时视频播放方式(监控设备-rtmp流)
Aug 10 Javascript
Jquery判断radio、selelct、checkbox是否选中及获取选中值方法总结
Apr 15 #Javascript
jQuery实现仿路边灯箱广告图片轮播效果
Apr 15 #Javascript
JavaScript中window.open用法实例详解
Apr 15 #Javascript
flash+jQuery实现可关闭及重复播放的压顶广告
Apr 15 #Javascript
jQuery事件绑定与解除绑定实现方法
Apr 15 #Javascript
JavaScript表格常用操作方法汇总
Apr 15 #Javascript
jQuery控制Div拖拽效果完整实例分析
Apr 15 #Javascript
You might like
Optimizer与Debugger兼容性问题的解决方法
2008/12/01 PHP
PHP 计算代码执行耗时的代码修正网上普遍错误
2011/05/14 PHP
使用PHPExcel操作Excel用法实例分析
2015/03/26 PHP
PHP实现可自定义样式的分页类
2016/03/29 PHP
关于php中的json_encode()和json_decode()函数的一些说明
2016/11/20 PHP
java解析json方法总结
2019/05/16 PHP
js中判断控件是否存在
2010/08/25 Javascript
键盘KeyCode值列表汇总
2013/11/26 Javascript
node文字生成图片的示例代码
2017/10/26 Javascript
Gulp实现静态网页模块化的方法详解
2018/01/09 Javascript
Angular利用trackBy提升性能的方法
2018/01/26 Javascript
如何给element添加一个抽屉组件的方法步骤
2019/07/14 Javascript
layui复选框的全选与取消实现方法
2019/09/02 Javascript
JavaScript 实现同时选取多个时间段的方法
2019/10/17 Javascript
js实现倒计时秒杀效果
2020/03/25 Javascript
python中的闭包用法实例详解
2015/05/05 Python
Python中的集合类型知识讲解
2015/08/19 Python
Python numpy实现数组合并实例(vstack,hstack)
2018/01/09 Python
urllib和BeautifulSoup爬取维基百科的词条简单实例
2018/01/17 Python
Python使用Pickle模块进行数据保存和读取的讲解
2019/04/09 Python
python的命名规则知识点总结
2019/10/04 Python
Pandas时间序列:重采样及频率转换方式
2019/12/26 Python
Pytorch生成随机数Tensor的方法汇总
2020/09/09 Python
HTML5+CSS3网页加载进度条的实现,下载进度条的代码实例
2016/12/30 HTML / CSS
SmartBuyGlasses英国:购买太阳镜和眼镜
2018/01/29 全球购物
应用艺术毕业生的自我评价
2013/12/04 职场文书
反腐倡廉警示教育活动总结
2014/05/05 职场文书
营销总监岗位职责
2014/09/16 职场文书
雨花台导游词
2015/02/06 职场文书
筑梦中国心得体会
2016/01/18 职场文书
你喜欢篮球吗?Python实现篮球游戏
2021/06/11 Python
MySQL 十大常用字符串函数详解
2021/06/30 MySQL
html5表单的required属性使用
2021/07/07 HTML / CSS
Canvas如何做个雪花屏版404的实现
2021/09/25 HTML / CSS
Python 多线程处理任务实例
2021/11/07 Python
Win11运行cmd提示“请求的操作需要提升”的两种解决方法
2022/07/07 数码科技