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

 更新时间:2015年04月15日 10:47:00   作者:gogo  
这篇文章主要介绍了JavaScript实现网页对象拖放功能的方法,涉及javascript针对浏览器的判断、事件爱你的添加与移除等相关操作技巧,非常具有实用价值,需要的朋友可以参考下

本文实例讲述了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逻辑Not运算符

    详解JavaScript逻辑Not运算符

    这篇文章主要介绍了JavaScript逻辑Not运算符,逻辑NOT运算符与C和Java中的逻辑 NOT 运算符相同,都由感叹号(!)表示,想要深入了解逻辑Not运算符的朋友可以参考一下
    2015-12-12
  • 微信小程序 腾讯地图显示偏差问题解决

    微信小程序 腾讯地图显示偏差问题解决

    这篇文章主要介绍了微信小程序 腾讯地图显示偏差问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-07-07
  • 微信小程序页面生命周期详解

    微信小程序页面生命周期详解

    这篇文章主要为大家详细介绍了微信小程序页面生命周期的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-01-01
  • JavaScript实现带粒子效果的进度条

    JavaScript实现带粒子效果的进度条

    这篇文章主要为大家详细介绍了JavaScript实现带粒子效果的进度条,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-06-06
  • js实现二级菜单渐隐显示

    js实现二级菜单渐隐显示

    这篇文章主要介绍了js制作导航菜单实现二级菜单渐隐显示,感兴趣的小伙伴们可以参考一下
    2015-11-11
  • js判断空对象的实例(超简单)

    js判断空对象的实例(超简单)

    下面小编就为大家带来一篇js判断空对象的实例(超简单)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-07-07
  • 解决JavaScript数字精度丢失问题的方法

    解决JavaScript数字精度丢失问题的方法

    这篇文章主要介绍了解决JavaScript数字精度丢失问题的方法,需要的朋友可以参考下
    2015-12-12
  • p5.js实现声音控制警察抓小偷游戏示例解析

    p5.js实现声音控制警察抓小偷游戏示例解析

    这篇文章主要为大家介绍了p5.js实现声音控制警察抓小偷游戏示例解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-04-04
  • JS判断一个数是否是水仙花数

    JS判断一个数是否是水仙花数

    水仙花数是指一个 n 位数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身。下面通过本文给大家分享JS判断一个数是否是水仙花数,需要的朋友参考下吧
    2017-06-06
  • 原生js实现验证码功能

    原生js实现验证码功能

    本文主要介绍了原生js实现验证码功能的实例,具有很好的参考价值。下面跟着小编一起来看下吧
    2017-03-03

最新评论