拖拽中怎么修复bug

JavaScript之修复拖拽的bug 简易的拖拽  需要用到的对象和事件: Event  对象 Event  对象代表事件的状态,比如事件在其中发生的元素、键盘按键的状态、鼠标的位置、鼠标按钮的状态,事件通常与函数结合使用,函数不会在事件发生前被执行! Event  对象的产生当用户单击某个元素的时候,我们给这个元素注册的事件就会触发,该事件的本质就是一个函数,而该函数的形参接收一个event对象. onmousedow 阅读详情

简易拖拽

 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修正位置
  1. <!DOCTYPE HTML>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>无标题文档</title>
  6. <style>
  7. #div1 {width:200px; height:200px; background:red; position:absolute;}
  8. </style>
  9. <script>
  10. window.onload=function ()
  11. {
  12. var oDiv=document.getElementById('div1');
  13. var disX=0;
  14. var disY=0;
  15. oDiv.onmousedown=function (ev)
  16. {
  17. var oEvent=ev||event;
  18. disX=oEvent.clientX-oDiv.offsetLeft;
  19. disY=oEvent.clientY-oDiv.offsetTop;
  20. document.onmousemove=function (ev)
  21. {
  22. var oEvent=ev||event;
  23. oDiv.style.left=oEvent.clientX-disX+'px';
  24. oDiv.style.top=oEvent.clientY-disY+'px';
  25. };
  26. document.onmouseup=function ()
  27. {
  28. document.onmousemove=null;
  29. document.onmouseup=null;
  30. };
  31. };
  32. };
  33. </script>
  34. </head>
  35. <body>
  36. <div id="div1"></div>
  37. </body>
  38. </html>
上面的这个拖拽有个bug,移动速度快和移动到浏览器头部的时候,大家观察一下,会出现问题。原因是盒子的作用域比较小,很容易移出本来盒子的区域导致代码不起作用,我们改进一下:
  1. <script>
  2. window.onload=function ()
  3. {
  4. var oDiv=document.getElementById('div1');
  5. var disX=0;
  6. var disY=0;
  7. oDiv.onmousedown=function (ev)
  8. {
  9. var oEvent=ev||event;
  10. disX=oEvent.clientX-oDiv.offsetLeft;
  11. disY=oEvent.clientY-oDiv.offsetTop;
  12. document.onmousemove=function (ev)
  13. {
  14. var oEvent=ev||event;
  15. oDiv.style.left=oEvent.clientX-disX+'px';
  16. oDiv.style.top=oEvent.clientY-disY+'px';
  17. };
  18. document.onmouseup=function ()
  19. {
  20. document.onmousemove=null;
  21. document.onmouseup=null;
  22. };
  23. };
  24. };
  25. </script>
上面这个代码,在火狐里面,有问题:出现鬼影,第二次拖拽的时候,出现问题:
  1. <script>
  2. window.onload=function ()
  3. {
  4. var oDiv=document.getElementById('div1');
  5. var disX=0;
  6. var disY=0;
  7. oDiv.onmousedown=function (ev)
  8. {
  9. var oEvent=ev||event;
  10. disX=oEvent.clientX-oDiv.offsetLeft;
  11. disY=oEvent.clientY-oDiv.offsetTop;
  12. document.onmousemove=function (ev)
  13. {
  14. var oEvent=ev||event;
  15. oDiv.style.left=oEvent.clientX-disX+'px';
  16. oDiv.style.top=oEvent.clientY-disY+'px';
  17. };
  18. document.onmouseup=function ()
  19. {
  20. document.onmousemove=null;
  21. document.onmouseup=null;
  22. };
  23. return false;
  24. };
  25. };
  26. </script>
这个拖拽可以扔到不可视区域,放开鼠标就找不到了。再继续修复bug:
  1. <script>
  2. window.onload=function ()
  3. {
  4. var oDiv=document.getElementById('div1');
  5. var disX=0;
  6. var disY=0;
  7. oDiv.onmousedown=function (ev)
  8. {
  9. var oEvent=ev||event;
  10. disX=oEvent.clientX-oDiv.offsetLeft;
  11. disY=oEvent.clientY-oDiv.offsetTop;
  12. document.onmousemove=function (ev)
  13. {
  14. var oEvent=ev||event;
  15. var l=oEvent.clientX-disX;
  16. var t=oEvent.clientY-disY;
  17. if(l<0)
  18. {
  19. l=0;
  20. }
  21. else if(l>document.documentElement.clientWidth-oDiv.offsetWidth)
  22. {
  23. l=document.documentElement.clientWidth-oDiv.offsetWidth;
  24. }
  25. if(t<0)
  26. {
  27. t=0;
  28. }
  29. else if(t>document.documentElement.clientHeight-oDiv.offsetHeight)
  30. {
  31. t=document.documentElement.clientHeight-oDiv.offsetHeight;
  32. }
  33. oDiv.style.left=l+'px';
  34. oDiv.style.top=t+'px';
  35. };
  36. document.onmouseup=function ()
  37. {
  38. document.onmousemove=null;
  39. document.onmouseup=null;
  40. };
  41. return false;
  42. };
  43. };
  44. </script>
【uniApp】解决支付宝小程序平台上的页面禁止拖动 在pages.json文件中,找到需要禁止拖动的页面path,在style添加mp-alipay属性,设置编译到 mp-alipay 平台的特定样式。 其中有allowsBounceVertical属性 :是否允许向下拉拽。支持 YES / NO "mp-alipay":{ "allowsBounceVertical":"NO" } 代码例子: ... 阅读详情

相关推荐

Fastboot刷机工具教程.zip

小米华为高通CPU机型刷机救砖工具和教程,亲测使用完美。

安卓玩机搞机----移植第三方rom修复 第三方GSI系统修复bug综合解析【一】

一加H2OS或OxygenOS设置背景透明看不清。修复MIUI sgsi/gsi人脸识别的方法。修复flyme无法打开数据和通话。修复gsi蓝牙音频无效问题。修复屏幕闪屏和亮度调节闪屏。去屏幕指纹gsi的指纹图标。修改MIUI音量条配色教程。手机配置信息显示问题。修复MIUI息屏显示。

小马哥的专栏 2万+

从CCS3.3到CCS10:工程迁移与开发环境升级全攻略

本文详细介绍了从CCS3.3迁移到CCS10的完整流程与实战指南。针对老旧DSP项目,阐述了升级的必要性,并逐步指导CCS10的安装配置、界面操作、核心的工程移植步骤,以及移植后常见的代码调整与问题解决方案,帮助开发者高效完成开发环境升级,充分利用新版本的工具链提升开发效率。

weixin_29304985的博客 377

微信小程序 实现最简单的组件拖拽

背景 最近在自主学习微信小程序的开发;对于零基础入门(没有学习过前端)的我,查阅了许多微信小程序拖拽的实现,大部分要么实现起来太复杂了,要么封装组件太复杂了,附带了拖拽之后排序等功能;因此写下这篇个人觉得最好理解的 微信小程序元素拖拽的实现; 原理 这边采用了 微信小程序中的 bindtouchstart、bindtouchmove、bindtouchend 三兄弟 实现 开始触摸、触摸后移动、触摸结束;并加上一些坐标的转换,实现简单的 拖动功能; 第一步 touchStart 拖拽的开始 (一切尽在图中)

q1076452761的博客 7523

内网CentOS离线部署LibreOffice:从依赖缺失到服务启动的完整避坑指南

本文详细介绍了在CentOS内网环境中离线部署LibreOffice的完整流程,包括依赖包准备、安装顺序优化及常见报错解决方案。针对金融等封闭网络场景,提供从rpm包选择到服务启动的全套避坑指南,特别解决libXinerama等图形库缺失问题,确保文档转换服务稳定运行。

weixin_33416697的博客 246

深入解析V4L2框架与高通KMD在Camera驱动中的协同设计

本文深入解析了V4L2框架与高通KMD在Camera驱动中的协同设计。V4L2作为Linux内核标准视频驱动框架,提供了统一的设备抽象与数据流管理;而高通KMD则在其基础上,通过引入CRM等核心模块,构建了一套针对移动平台复杂相机系统的高效内核态驱动架构,实现了硬件配置与执行的解耦与智能调度。

qq_27496129的博客 1147

非华为机型如何体验HarmonyOS鸿蒙系统 刷写HarmonyOS鸿蒙GSI系统以及一些初步的bug修复

【代码】非华为机型如何体验HarmonyOS鸿蒙系统 刷写HarmonyOS鸿蒙GSI系统以及一些bug修复。

小马哥的专栏 3万+

蜗牛星际+OpenWrt实战:双网口变AP模式,让所有设备同网段互通

本文详细介绍了如何将蜗牛星际双网口小主机刷入OpenWrt系统,并将其配置为AP模式,实现与主路由同网段的无缝桥接。通过关闭DHCP、桥接物理网口等核心步骤,解决家庭网络设备割裂问题,让所有设备在同一局域网内高效互通,特别适合追求网络简洁和厌恶多级NAT的技术爱好者。

zero1的博客 960

如何制作一个卡刷扩容补丁。用于扩容系统等分区 刷写第三方需要扩容才可以刷写的系统或者GSI GSI系统bug修复【二】

前面分享了一期手动扩容系统分区的博文,今天来系统解析下扩容卡刷补丁的制作。因为机型字库不同。挂载的分区方式也有所不同。操作前首先确定自己机型的字库芯片。

小马哥的专栏 2401

ST电机库实战:从状态机到稳健启动流程的深度解析

本文深度解析了ST电机库中状态机的核心作用与稳健启动流程。状态机作为电机控制的“交通指挥官”,通过IDLE、CHARGE_BOOT_CAP、ALIGNMENT等一系列状态的严格跳转,确保了永磁同步电机(PMSM)和直流无刷电机(BLDC)的安全启动与可靠运行,是避免硬件损坏和实现平稳控制的关键。

weixin_29161785的博客 226

有效Dk值提取方法的仿真分析

通过本文的仿真对比分析,提取有效Dk值方面,TDR技术在一些固定的场景下,依然有其参考应用价值,而随着VNA功能的不断增强和高精度测量手段的不断更新,双端口Delta-L技术才是主流评估方法,而单端口Delta-L技术则可以作为其降本增效的方案补充。

一只豌豆象的博客 1824

拖拽及相关BUG的修复

代码如下,主要是注意获取点击时鼠标与盒子的相应位置,最后用移动后的坐标减去相对的坐标。注意限制盒子拖拽范围,火狐的鬼影问题即可。 DOCTYPE html> html>     head>         meta charset="UTF-8">         title>title>         style type="text/css">   

steph_qiu的博客 329

生成模型实战 | VQ-GAN(Vector Quantized-Generative Adversarial Network)

向量量化生成对抗网络 (Vector Quantized-Generative Adversarial Network, VQ-GAN) 结合了向量量化变分子自编码器 (VQ-VAE) 和生成对抗网络 (GAN) 的优势,通过向量量化 (Vector Quantised, VQ) 构建离散潜空间,结合感知损失与对抗损失,在保持语义一致性的同时能够生成纹理细节丰富的图像。在本节中,我们将详细解释 VQ-GAN 的技术原理和各个组成,并使用 PyTorch 从零开始实现 VQ-GAN。

盼小辉丶的博客 6663

简易拖拽以及bug的修复

1、拖拽的实现     我们将实现一个盒子在屏幕窗口随着鼠标按下跟随者鼠标指针移到,当鼠标松开将会静止不动;若再按下又可移动盒子。我们先准备盒子,代码如下: #box{width: 200px;height: 200px;background: cornflowerblue;position: absolute;} js代码:

小屋博客 1024

【Bug已解决】NCCL timeout for validation 解决方案

训练用多卡 DDP / FSDP 正常,但一到或者进程直接 hang 在 eval 的某个集合通信上。最迷惑的是:训练阶段(有集合通信)完全正常,偏偏 eval 阶段(看起来更轻量)超时。因为 eval 阶段某些 rank 没参与 collective,导致参与的那部分 rank 永远等不到同伴。

一键难忘的博客 142

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

js-鼠标拖拽窗口bug修复

拖拽原理

琳 1337

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

AI生成的代码在并发场景翻车:一次看板拖拽BUG修复记

AI编程工具能快速生成看似完美的业务代码,但在真实并发场景下可能埋下隐患。当多个标签页或用户同时操作看板拖拽时,基于防抖与全量覆盖的乐观更新策略,很容易导致旧状态覆盖新状态,引发卡片回跳、重复通知等诡异问题。理解幂等操作与版本控制是解决这类冲突的关键:通过将拖拽行为抽象为移动事件,配合版本号校验与409冲突处理,才能确保数据最终一致。文章从实际故障出发,剖析全量保存接口在多人协作中的致命缺陷,并给出前后端重构方案与回归测试清单。对于依赖AI编码助手开发协同类应用的工程师,审视生成代码中隐藏的并发逻辑,比单纯

weixin_42531494的博客 301

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

拖拽中怎么修复bug(霸哥)

让你试试被代码支配的恐惧 拖拽盒子代码: #box{background: red;height: 50px;width: 50px;position: absolute;} window.onload=function(){

sTranDed_的博客 627

JS:简单的拖拽事件和bug修复

JS:简单的拖拽事件和bug修复

dzahao的博客 833

自研Vue3开源Tree组件:节点拖拽bug修复

bug原因:插入扁平化列表的位置判断错误~

felix_alone2012的博客 387

Acticle 7:javascript运动:怎么修复拖拽运动中的bug

JS的运动基础 1.首先呢,最原始的拖拽代码是这样的:<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> <style type="text/css"> #div{ width: 200px;

amytun_yu的博客 326

el-dialog拖拽,边界问题完全修正,网上版本的bug修复

欢迎大家来到我的博客,请各位看客们点赞、收藏、关注三连!欢迎大家关注我的知识库,Java之从零开始·语雀你的关注就是我前进的动力!优快云专注于问题解决的博客记录,语雀专注于知识的收集与汇总,包括分享前沿技术。可拖拽、边界问题。 ​ 修改点 看图说话,这个offsetHeight边距是盒子的距离,可是我们把这个盒子计算进去了,多算了高度,致使弹出框跑出了页面。编写基础js,取名叫drag.js 编辑外层使用的指令文件,取名叫el-drag-dialog.js 在vue组件中使用 参考链接:https:/

hikktn的博客 1011

在Qt quick5.10-qml中使用drag and drop进行拖拽,及qml拖拽的Bug

在Qt5.10中qml实现的拖拽并不完善,以下Bug已在Qt5.12,Qt5.13中进行了修复。 在Qt Quick与 drag and drop 相关的几个QML Type: DropArea DropArea 是不可见的,它定义了一个可以接收拖放的区域。它的 entered 信号在有物体被拖入区域时发射,exited 信号在物体被拖出区域时发射,当物体在区域内被拖着来回移动时会不...

qq_36685813的博客 7649

Readest TTS 歌词式句子视图(5755)实现解析:能力门控、拖拽定位、缓冲指示与几何失效 Bug 修复全记录

本文以 Readest 仓库中记录 Issue #5755("TTS Player 歌词式句子视图")的[项目记忆文档](https://link.gitcode.com/i/aa2464adb761ff2a0f13d9c9879c116c)为主体,结合 [TTSController.ts](https://link.gitcode.com/i/ad0ba8dd1fef5b2933b25ae231

gitblog_00102的博客 10
上一篇: jQuery事件绑定机制完整版
下一篇: Ajax基础
小小樟鱼
博客等级 码龄10年 38粉丝 30原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值