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 相关文章推荐
js操作textarea方法集合封装(兼容IE,firefox)
Feb 22 Javascript
jQuery 下拉列表 二级联动插件分享
Mar 29 Javascript
js限制文本框输入长度两种限制方式(长度、字节数)
Dec 19 Javascript
jquery 获取表单元素里面的值示例代码
Jul 28 Javascript
js简单实现用户注册信息的校验代码
Nov 15 Javascript
javascript获取form里的表单元素的示例代码
Feb 14 Javascript
全面解析JavaScript的Backbone.js框架中的Router路由
May 05 Javascript
解决微信浏览器Javascript无法使用window.location.reload()刷新页面
Jun 21 Javascript
原生JS实现不断变化的标签
May 22 Javascript
vue项目中全局引入1个.scss文件的问题解决
Aug 01 Javascript
Vue 401配合Vuex防止多次弹框的案例
Nov 11 Javascript
AngularJS实现多级下拉框
Mar 25 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中在PDO中使用事务(Transaction)
2011/05/14 PHP
新浪SAE云平台下使用codeigniter的数据库配置
2014/06/12 PHP
php PDO判断连接是否可用的实现方法
2017/04/03 PHP
使用SyntaxHighlighter实现HTML高亮显示代码的方法
2010/02/04 Javascript
jquery 学习笔记一
2010/04/07 Javascript
屏蔽相应键盘按钮操作
2014/03/10 Javascript
js实现按一下删除键删除整个单词附demo
2014/09/05 Javascript
jQuery中offset()方法用法实例
2015/01/16 Javascript
JQuery中extend的用法实例分析
2015/02/08 Javascript
javascript实现简单的贪吃蛇游戏
2015/03/31 Javascript
JavaScript实现添加及删除事件的方法小结
2015/08/04 Javascript
浅析javascript函数表达式
2016/02/10 Javascript
详解BootStrap中Affix控件的使用及保持布局的美观的方法
2016/07/08 Javascript
JavaScript数组去重由慢到快由繁到简(优化篇)
2016/08/26 Javascript
nodejs结合Socket.IO实现的即时通讯功能详解
2018/01/12 NodeJs
javaScript产生随机数的用法小结
2018/04/21 Javascript
微信小程序 扭蛋抽奖机css3动画实现详解
2019/07/19 Javascript
Vue组件通信中非父子组件传值知识点总结
2019/12/05 Javascript
vue点击按钮动态创建与删除组件功能
2019/12/29 Javascript
vue项目中监听手机物理返回键的实现
2020/01/18 Javascript
js实现弹窗猜数字游戏
2020/11/26 Javascript
[58:29]DOTA2-DPC中国联赛 正赛 Phoenix vs XG BO3 第一场 1月31日
2021/03/11 DOTA
零基础写python爬虫之抓取糗事百科代码分享
2014/11/06 Python
Python中DJANGO简单测试实例
2015/05/11 Python
Python字符串格式化的方法(两种)
2017/09/19 Python
python 用下标截取字符串的实例
2018/12/25 Python
Python语言检测模块langid和langdetect的使用实例
2019/02/19 Python
将pytorch转成longtensor的简单方法
2020/02/18 Python
CSS3中设置3D变形的transform-style属性详解
2016/05/23 HTML / CSS
webapp字号大小跟随系统字号大小缩放的示例代码
2018/12/26 HTML / CSS
德国街头和运动文化高品质商店:BSTN Store
2017/08/26 全球购物
怎么写有吸引力的自荐信
2013/11/17 职场文书
《小猪家的桃花树》教学反思
2014/04/11 职场文书
幼儿教师小班个人总结
2015/02/05 职场文书
预备党员入党感想
2015/08/10 职场文书
宝塔更新Python及Flask项目的部署
2022/04/11 Python