拖拽中怎么修复bug
来源:互联网 发布:手机简单编曲软件 编辑:程序博客网 时间:2024/06/02 16:29
简易拖拽
1.拖拽 == 鼠标按下 接着移动鼠标。
bar.onmousedown =function(){
document.onmousemove = function(){
}
}
2. 当我们按下鼠标的时候,就要记录当前 鼠标的位置 - 大盒子的位置
算出 bar 当前在 大盒子内的距离 。
3. 防止选择拖动(防止复制文字)
我们知道按下鼠标然后拖拽可以选择文字 的。
清除选中的内容
window.getSelection? window.getSelection().removeAllRanges() : document.selection.empty();
l拖拽原理l距离不变
l三个事件:onmousedown鼠标按下、onmousemove鼠标抚摸、onmouseup鼠标弹起
l靠谱拖拽
l原有拖拽的问题
l直接给document加事件
lFF下,空Div拖拽Bug
l阻止默认事件
l防止拖出页面
l修正位置
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>无标题文档</title>
<style>
#div1 {width:200px; height:200px; background:red; position:absolute;}
</style>
<script>
window.onload=function ()
{
var oDiv=document.getElementById('div1');
var disX=0;
var disY=0;
oDiv.onmousedown=function (ev)
{
var oEvent=ev||event;
disX=oEvent.clientX-oDiv.offsetLeft;
disY=oEvent.clientY-oDiv.offsetTop;
document.onmousemove=function (ev)
{
var oEvent=ev||event;
oDiv.style.left=oEvent.clientX-disX+'px';
oDiv.style.top=oEvent.clientY-disY+'px';
};
document.onmouseup=function ()
{
document.onmousemove=null;
document.onmouseup=null;
};
};
};
</script>
</head>
<body>
<div id="div1"></div>
</body>
</html>
上面的这个拖拽有个bug,移动速度快和移动到浏览器头部的时候,大家观察一下,会出现问题。原因是盒子的作用域比较小,很容易移出本来盒子的区域导致代码不起作用,我们改进一下:
- <script>
window.onload=function ()
{
var oDiv=document.getElementById('div1');
var disX=0;
var disY=0;
oDiv.onmousedown=function (ev)
{
var oEvent=ev||event;
disX=oEvent.clientX-oDiv.offsetLeft;
disY=oEvent.clientY-oDiv.offsetTop;
document.onmousemove=function (ev)
{
var oEvent=ev||event;
oDiv.style.left=oEvent.clientX-disX+'px';
oDiv.style.top=oEvent.clientY-disY+'px';
};
document.onmouseup=function ()
{
document.onmousemove=null;
document.onmouseup=null;
};
};
};
</script>
上面这个代码,在火狐里面,有问题:出现鬼影,第二次拖拽的时候,出现问题:
<script>
window.onload=function ()
{
var oDiv=document.getElementById('div1');
var disX=0;
var disY=0;
oDiv.onmousedown=function (ev)
{
var oEvent=ev||event;
disX=oEvent.clientX-oDiv.offsetLeft;
disY=oEvent.clientY-oDiv.offsetTop;
document.onmousemove=function (ev)
{
var oEvent=ev||event;
oDiv.style.left=oEvent.clientX-disX+'px';
oDiv.style.top=oEvent.clientY-disY+'px';
};
document.onmouseup=function ()
{
document.onmousemove=null;
document.onmouseup=null;
};
return false;
};
};
</script>
这个拖拽可以扔到不可视区域,放开鼠标就找不到了。再继续修复bug:
<script>
window.onload=function ()
{
var oDiv=document.getElementById('div1');
var disX=0;
var disY=0;
oDiv.onmousedown=function (ev)
{
var oEvent=ev||event;
disX=oEvent.clientX-oDiv.offsetLeft;
disY=oEvent.clientY-oDiv.offsetTop;
document.onmousemove=function (ev)
{
var oEvent=ev||event;
var l=oEvent.clientX-disX;
var t=oEvent.clientY-disY;
if(l<0)
{
l=0;
}
else if(l>document.documentElement.clientWidth-oDiv.offsetWidth)
{
l=document.documentElement.clientWidth-oDiv.offsetWidth;
}
if(t<0)
{
t=0;
}
else if(t>document.documentElement.clientHeight-oDiv.offsetHeight)
{
t=document.documentElement.clientHeight-oDiv.offsetHeight;
}
oDiv.style.left=l+'px';
oDiv.style.top=t+'px';
};
document.onmouseup=function ()
{
document.onmousemove=null;
document.onmouseup=null;
};
return false;
};
};
</script>
0 0
- 拖拽中怎么修复bug
- 拖拽中怎么修复bug
- 拖拽中怎么修复bug
- 拖拽中怎么修复bug(霸哥)
- BUG修复
- Bug 修复
- Bug修复
- bug修复
- bug和bug修复
- css自动分散字符????仅IE下有效,怎么修复这个Bug????
- Acticle 7:javascript运动:怎么修复拖拽运动中的bug
- css常见bug修复
- 如何修复六分屏bug
- 修复Bug好比钓鱼
- BUG修复总结
- 修复Bug好比钓鱼
- CloudStack修复bug
- 调试修复bug
- 阿里云Linux服务器安装JDK
- POJ 3207 Ikki's Story IV - Panda's Trick 强连通分量或并查集+2sat
- 安卓1106_网络编程02get post 请求 httpclient httpurlconnection 开源提交 多线程下载 开源下载
- Hadoop 源码编译 step by step 最简洁的步骤
- codevs 1269 匈牙利游戏(次短路)
- 拖拽中怎么修复bug
- 压缩(解压)工具
- Amoeba实现mysql读写分离
- javascript拖拽盒子移动的实现
- jsp页面显示后台传来参数以及传递参数给后台
- Centos6.5安装/运行/启动/登录docker
- 安卓1107_四大组件-多页面开发Activity
- (sqlldr)将xx.csv文件导入oracle数据库
- 03-Java中的转译字符