`

拖动div时鼠标mouseup事件丢失

IE 
阅读更多
拖动div时,总会出现mouseup丢失情况,困扰了很久。

原因可能是:
当拖动的div中有图片或链接时,如果是点图片或链接开始拖动,拖出窗口时也会导致onmouseup丢失.

解决办法:
IE下,可以采用setCapture()方法,在onmousedown时捕获,在onmouseup时释放.用在火狐下可没有这么好用了,网上提供的:mousedown下面加入window.captureEvents(Event.mousemove);然后mouseup下加入window.releaseEvents(overviewDiv.MOUSEMOVE)加入后没有什么作用.

分析一下可能使本事件丢失的原因大概有:
1.在FF里用禁止事件的默认返回值,(event.preventDefault())会使onmouseup事件丢失.
2.拖动Div面有其他元素导致焦点失去等等。 所以可以:
     1.拖动时始终将focus指向另外一个element,可使拖动的容器不选中.
     2.拖动结束后将focus指向另外一个element
     3.取消range中所有选择.
第三种用到:IE document.selection&&document.selection.empty(); FF windwo.getSelection&&window.getSelection().removeAllRanges();
把这些加入到mousemove里面。然后避免IE情况,把 o.setCapture && o.setCapture()加入到mousedown,this.o.setCapture && this.o.releaseCapture()加入到mosueup。
分享到:
评论
1 楼 tongkp 2012-12-10  
非常感谢,解决了我的问题,FF时在move里加入:window.getSelection&&window.getSelection().removeAllRanges(); 果然好使,学习了。

相关推荐

    JS中mouseup事件丢失的原因与解决办法

    当实现类似Excel选中区域的功能时,经常出现 mouseup 事件丢失的情况,由于缺少了 mouseup 事件,导致一个完整的操作无法进行。 如果你是想进行拖拽移动操作,也可以参考本文。 原因 目前发现两个原因: 触发了...

    js 前端鼠标拖动事件实例

    这是开始拖动操作的第一步,通常在这里会记录下鼠标按下时的位置,以便后续的`mousemove`事件可以知道元素应该移动的方向和距离。 2. `mousemove`事件:当用户在页面上移动鼠标时,只要鼠标按钮保持被按下状态,就...

    拖拽+拖拽改变div大小

    在网页开发中,"拖拽+拖拽改变div大小"是一种常见的交互设计,它允许用户通过鼠标拖动来调整div元素的尺寸。这种功能在创建可定制的布局、图形编辑工具或者任何需要用户自定义区域大小的应用中非常有用。本文将深入...

    JS实现鼠标拖动div移动(附效果演示).zip

    在JavaScript中,实现鼠标拖动div移动的效果是前端开发中常见的交互设计,它涉及到DOM操作、事件处理以及坐标计算等多个知识点。以下将详细介绍这个过程。 首先,我们需要理解`div`在HTML中的作用。`div`元素是块级...

    jquery鼠标拖动层DIV源代码精简整理版

    `mousedown`事件在用户按下鼠标按钮时触发,`mousemove`在移动鼠标时触发,而`mouseup`在用户释放鼠标按钮时触发。 3. **初始化状态**:在`mousedown`事件处理函数中,记录初始鼠标位置和元素位置,以便计算拖动...

    jQuery鼠标上下拖动div排序代码

    《jQuery实现鼠标拖动div排序技术详解》 在网页开发中,用户交互体验是至关重要的。其中,元素的可拖动排序功能可以让用户更加直观地调整界面布局,提高使用便捷性。本文将深入探讨如何利用jQuery库实现鼠标上下...

    鼠标拖动DIV,DIV移动后加载后台JSON数据

    5. **事件结束**:`mouseup`事件触发时,停止监听`mousemove`事件,完成拖动操作。 接着,关于“DIV移动后加载后台JSON数据”,这通常涉及到AJAX(异步JavaScript和XML)技术。当DIV移动到特定位置或满足某个条件时...

    javascript实现鼠标拖动div的效果

    `mouseup`事件用于在鼠标松开时关闭拖动状态。 为了提高用户体验,我们还可以添加一些额外的优化。例如,限制div的移动范围,使其不能超出父容器的边界: ```javascript var parentRect = draggable.parentNode....

    js 鼠标位置 div拖拽

    - 当鼠标按钮释放时,`mouseup`事件会触发,此时可以停止更新div的位置。 3. **浏览器兼容性**: 注意到标签中提到了"支持ie和firefox",这意味着代码需要考虑不同浏览器之间的差异。例如,`offsetX`和`offsetY`...

    js拖拽div随意摆放

    `mousedown` 事件在用户按下鼠标按钮时触发,而 `mousemove` 事件在用户移动鼠标时触发。我们还需要一个 `mouseup` 事件来停止拖拽。 ```javascript var draggable = document.getElementById('draggable'); var ...

    div拖拽 关键在于对谁添加onmousemove事件 1积分

    6. **结束拖放**:添加`mouseup`事件监听器,当鼠标释放时,从document上移除`mousemove`事件监听器,结束拖放操作。 在描述中提到的两个例子,"拖动div 效果好.html"和"拖动div 效果差.html",可能分别展示了正确...

    asp.net中实现可拖动div

    在ASP.NET中实现一个可拖动的div是提高用户界面交互性和用户体验的有效方式,尤其当需要替代传统的alert对话框时,可拖动div能提供更加灵活和友好的用户体验。 首先,要实现可拖动的div,我们需要理解HTML和CSS的...

    拖动多个div

    在标题“拖动多个div”中,我们关注的是如何使一个或多个 `div` 元素变得可拖动,即用户可以通过鼠标进行交互,自由地在页面上移动这些元素。这种功能在构建各种交互式界面时非常有用,例如,可以用于创建可自定义...

    js拖动div并拖动DIV的大小

    - **mouseup**:当用户释放鼠标左键时触发,结束拖放或调整大小的操作。 5. **变量初始化**: 在mousedown事件中,记录下初始的鼠标位置、div的初始位置和尺寸,以及是否正在进行调整大小的操作。 6. **计算和...

    Div+CSS层完美实现拖拽特效

    4. **释放处理**:最后,当鼠标释放(`mouseup`)时,停止监听`mousemove`事件,拖拽结束。 这里有一个简单的JavaScript实现示例: ```javascript let dragElement = document.getElementById('draggableDiv'); let ...

    DIV可移动 可实现任意拖动放大缩小

    2. **事件监听**:为了让div可以被拖动,我们需要监听鼠标的`mousedown`、`mousemove`和`mouseup`事件。`mousedown`事件表示鼠标按键按下,`mousemove`事件发生在鼠标移动时,`mouseup`事件则发生在鼠标按键释放。...

    JQ JS javascript layui UI组件 元素 div 拖动插件

    在这个拖动插件中,jQuery可能被用来选择特定的div元素,并添加必要的事件监听器,以便当用户按下鼠标并移动时,div能跟随鼠标移动。 JavaScript作为浏览器端的主要编程语言,负责实现插件的核心逻辑。它处理拖动...

    jQuery鼠标拖动div层排序代码

    综上所述,通过结合jQuery的事件处理和DOM操作,我们可以创建一个直观的鼠标拖动div层排序功能。这个功能不仅提升了用户交互性,也使得对列表内容的管理变得更加便捷。通过不断优化和调整,我们可以进一步提升拖放...

    vue+mousemove实现鼠标拖动功能(拖动过快失效问题解决方法)

    今天用vue+原生js的mousemove事件,写了个拖动,发现只能慢慢拖动才行,鼠标只要移动快了,就失效,不能拖动了; 搞了半天在,总算解决了,但是问题的深层原理还没搞清楚,知道的大侠可以留言分享,下面直接上代码:...

Global site tag (gtag.js) - Google Analytics