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 相关文章推荐
让浏览器非阻塞加载javascript的几种方法小结
Apr 25 Javascript
Jquery 的扩展方法总结
Oct 01 Javascript
jQuery自定义添加&quot;$&quot;与解决&quot;$&quot;冲突的方法
Jan 19 Javascript
理解javascript中的with关键字
Feb 15 Javascript
Angular 理解module和injector,即依赖注入
Sep 07 Javascript
vue.js中过滤器的使用教程
Jun 08 Javascript
Vue cli 引入第三方JS和CSS的常用方法分享
Jan 20 Javascript
浅谈vue项目如何打包扔向服务器
May 08 Javascript
浅谈Layui的eleTree树式选择器使用方法
Sep 25 Javascript
vue实现pdf文档在线预览功能
Nov 26 Javascript
原生javascript制作贪吃蛇小游戏的方法分析
Feb 26 Javascript
使用compose函数优化代码提高可读性及扩展性
Jun 16 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
php smarty模版引擎中变量操作符及使用方法
2009/12/11 PHP
PHP中配置IIS7实现基本身份验证的方法
2015/09/24 PHP
Zend Framework入门应用实例详解
2016/12/11 PHP
laravel自定义分页效果
2017/07/23 PHP
thinkPHP5框架设置404、403等http状态页面的方法
2018/06/05 PHP
PHP中16个高危函数整理
2019/09/19 PHP
JavaScript实现动态增加文件域表单
2009/02/12 Javascript
学习ExtJS table布局
2009/10/08 Javascript
javascript 构建一个xmlhttp对象池合理创建和使用xmlhttp对象
2010/01/15 Javascript
鼠标拖动实现DIV排序示例代码
2013/10/14 Javascript
js实现图片上传并正常显示
2015/12/19 Javascript
关于RequireJS的简单介绍即使用方法
2016/10/20 Javascript
深入理解jQuery.data() 的实现方式
2016/11/30 Javascript
微信小程序开发图片拖拽实例详解
2017/05/05 Javascript
Angular2里获取(input file)上传文件的内容的方法
2017/09/05 Javascript
详解JS中统计函数执行次数与执行时间
2018/09/04 Javascript
小程序实现授权登陆的解决方案
2018/12/02 Javascript
小程序卡片切换效果组件wxCardSwiper的实现
2020/02/13 Javascript
jquery实现两个div中的元素相互拖动的方法分析
2020/04/05 jQuery
Vue使用axios引起的后台session不同操作
2020/08/14 Javascript
[54:10]Spirit vs NB Supermajor小组赛 A组败者组决赛 BO3 第一场 6.2
2018/06/03 DOTA
python中精确输出JSON浮点数的方法
2014/04/18 Python
python中合并两个文本文件并按照姓名首字母排序的例子
2014/04/25 Python
Python中文件操作简明介绍
2015/04/13 Python
python实现mysql的单引号字符串过滤方法
2015/11/14 Python
django创建超级用户时指定添加其它字段方式
2020/05/14 Python
波兰补充商店:Muscle Power
2018/10/29 全球购物
以设计师精品品质提供快速时尚:Mostata
2019/05/10 全球购物
顶岗实习计划书
2014/01/10 职场文书
安全协议书范本
2014/04/21 职场文书
2014年辅导员工作总结
2014/11/18 职场文书
警示教育片观后感
2015/06/17 职场文书
大学生见习总结报告
2015/06/24 职场文书
python基础之错误和异常处理
2021/10/24 Python
唤醒紫霞仙子,携手再游三界!大话手游X《大话西游》电影合作专属剧情任务
2022/04/03 其他游戏
python中pd.cut()与pd.qcut()的对比及示例
2022/06/16 Python