我正在使用 jQuery UI 可排序行为,并且遇到了一种情况,我需要通过与原始句柄以外的另一个元素(当时不可见)的交互来启动可排序的拖动行为。由于一些帖子中的建议和jquery.simulate.js (用于运行官方 jQUI 测试)的使用,我设法组合了一种方法来实现这一点,并且我可以在除 IE8 之外的几乎所有浏览器中按程序启动可排序的拖动过程和下面,模拟这样的事件:
item.simulate('mousedown',pos).simulate('mousemove',{ clientX: pos.clientX+1, clientY: pos.clientY});
问题:在IE8(或以下)中,在与外部“句柄”交互并模拟mousedown和mousemove事件后,拖动确实正确启动,但只要用户真正以任何方式/形状/形式移动鼠标,拖动停止或取消,就好像发生了 'mouseup' 事件以完成它。我高度认为这是由于旧的 fireEvent (IE8-) 方法与其他所有方法使用的 dispatchEvent 存在一些根本差异,但无法完全弄清楚如何使用,或者是否可以阻止它。
我正在寻找的是可以采取哪些措施来纠正这个问题的片段或关于为什么会发生这种情况的建议,以及它是否可以有某种解决方法来防止取消(例如在任何其他浏览器中发生的行为)使用 dispatchEvent 而不是 fireEvent)。
已经为您整理了一个小例子,描述了成功(任何最近的浏览器)或失败的情况:demo
TL;DR:已经整理了一个小方法来程序启动 jQUI 可排序拖动(通过 jquery.simulate.js,上面的链接),但它无法工作或在 IE8- 中自行取消。需要一些关于如何克服它的指导或建议。检查上面的演示