指针事件:无不适用于移动设备

bbo*_*kol 2 javascript css events pointer-events vue.js

我正在研究 Vue 的自定义拖放模块,我发现了一个问题。为了在指针向下覆盖浏览器D&D(因为我需要),我正在克隆我想要拖动的div,然后触发pointermove(在此事件中,我在克隆的div上设置X和Y),当我向上触发指针时,该div的值被转移到拖动位置。为了在指针向上事件上将克隆(拖动)div 下的目标元素,我使用了 css 属性pointer-events: none(在克隆 div 上),并且桌面上的一切都很好。在移动设备上,事件定位总是拖动元素。

有来自触发事件的console.log: 记录的事件

小智 9

现代移动浏览器使用“touch-action”CSS 属性。您可以在这里阅读所有相关内容:https://developer.mozilla.org/en-US/docs/Web/CSS/touch-action

只需添加touch-action: none;到您添加到的相同元素即可pointer-events: none;

否则,根据您设置 vue 组件的方式,您可能需要监听 'touchstart' 和 'touchend' 事件并取消它们:

<TargetElement>.addEventListener( 'touchstart', e => e.preventDefault )
Run Code Online (Sandbox Code Playgroud)