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和php如何获取当前url的内容
Sep 22 Javascript
jquery实现横向图片轮播特效代码分享
Nov 19 Javascript
Vue自定义指令拖拽功能示例
Feb 17 Javascript
Easyui使用Dialog行内按钮布局的实例
Jul 27 Javascript
form表单数据封装成json格式并提交给服务器的实现方法
Dec 14 Javascript
JS实现对json对象排序并删除id相同项功能示例
Apr 18 Javascript
ES6使用export和import实现模块化的方法
Sep 10 Javascript
详解一个基于套接字实现长连接的express
Mar 28 Javascript
JS去除字符串最后的逗号实例分析【四种方法】
Jun 20 Javascript
Angular8基础应用之表单及其验证
Aug 11 Javascript
layui中select,radio设置不生效的解决方法
Sep 05 Javascript
js实现弹窗效果
Aug 09 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 zip文件解压类代码
2009/12/02 PHP
PHP 第二节 数据类型之数组
2012/04/28 PHP
ThinkPHP模版引擎之变量输出详解
2014/12/05 PHP
php中删除、清空session的方式总结
2015/10/09 PHP
简单介绍PHP非阻塞模式
2016/03/03 PHP
php微信扫码支付 php公众号支付
2019/03/24 PHP
dreamweaver 安装Jquery智能提示
2011/04/02 Javascript
DWZ table的原生分页浅谈
2013/03/01 Javascript
javascript 数字格式化输出的实现代码
2013/12/10 Javascript
js确认删除对话框效果的示例代码
2014/02/20 Javascript
node.js中的socket.io入门实例
2014/04/26 Javascript
JavaScript如何实现在文本框(密码框)输入提示语
2015/12/25 Javascript
jQuery实现简单倒计时功能的方法
2016/07/04 Javascript
微信小程序 Record API详解及实例代码
2016/09/30 Javascript
原生JavaScript实现Tooltip浮动提示框特效
2017/03/07 Javascript
基于JavaScript实现弹幕特效
2020/08/27 Javascript
vue如何获取点击事件源的方法
2017/08/10 Javascript
js前端导出Excel的方法
2017/11/01 Javascript
如何让微信小程序页面之间的通信不再变困难
2019/06/03 Javascript
Python对列表排序的方法实例分析
2015/05/16 Python
python中实现迭代器(iterator)的方法示例
2017/01/19 Python
python3写爬取B站视频弹幕功能
2017/12/22 Python
python 实现登录网页的操作方法
2018/05/11 Python
python实现批量文件重命名
2019/10/31 Python
Python常用模块logging——日志输出功能(示例代码)
2019/11/20 Python
python解析命令行参数的三种方法详解
2019/11/29 Python
Python 实现将某一列设置为str类型
2020/07/14 Python
Python 无限级分类树状结构生成算法的实现
2021/01/21 Python
迪士尼西班牙官方网上商店:ShopDisney西班牙
2020/02/02 全球购物
高级销售员求职信
2013/10/25 职场文书
物流毕业生个人的自我评价
2014/02/13 职场文书
医院我们的节日活动实施方案
2014/08/22 职场文书
运动会广播稿诗歌版
2014/09/12 职场文书
2014个人反腐倡廉思想汇报
2014/09/15 职场文书
2015年医德医风工作总结
2015/04/02 职场文书
导游词之神仙居景区
2019/11/15 职场文书