指针事件:none 不适用于移动设备
Pointer-events: none doesn't work on mobile
我正在处理 Vue 的自定义拖放模块,我发现了一个问题。为了在指针向下覆盖浏览器 D&D(因为我需要),我正在克隆 div,我想拖动它然后触发 pointermove(在这个事件中,我在克隆 div 上设置 X 和 Y) ,当我向上发射指针时,这个 div 的值被转移到拖动位置。为了在指针向上事件中克隆(拖动)div 下的目标元素,我使用了 css 属性 指针事件:none(在克隆 div 上)和桌面上一切正常。在移动设备上,事件定位总是拖动元素。
触发事件中有 console.log 个:
logged events
现代移动浏览器改用 '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 )
我在另一个问题中找到了我的问题的答案:
How to find out the actual event.target of touchmove javascript event?
我们可以通过 document.elementFromPoint(
e.clientX,
e.clientY
);
定位事件下的元素
我正在处理 Vue 的自定义拖放模块,我发现了一个问题。为了在指针向下覆盖浏览器 D&D(因为我需要),我正在克隆 div,我想拖动它然后触发 pointermove(在这个事件中,我在克隆 div 上设置 X 和 Y) ,当我向上发射指针时,这个 div 的值被转移到拖动位置。为了在指针向上事件中克隆(拖动)div 下的目标元素,我使用了 css 属性 指针事件:none(在克隆 div 上)和桌面上一切正常。在移动设备上,事件定位总是拖动元素。
触发事件中有 console.log 个: logged events
现代移动浏览器改用 '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 )
我在另一个问题中找到了我的问题的答案: How to find out the actual event.target of touchmove javascript event?
我们可以通过 document.elementFromPoint(
e.clientX,
e.clientY
);