拖放 - 使用指针事件通过触摸元素:无

问题描述:

我与非本地阻力试验和使用触摸和鼠标事件下降。拖放 - 使用指针事件通过触摸元素:无

我采用的方法是克隆拖动源和移动克隆。所有事件都附加到文档中。克隆得到CSS应用的pointer-events: none允许克隆下的元素算作一个mousemovetouchmove事件的事件目标,而不是克隆本身。

这在所有的桌面浏览器的伟大工程(鼠标),但似乎并没有在使用单点触摸,在iPad上进行测试时没有任何影响 - 这就是克隆总是显示为事件的目标。我尝试过寻找相当数量的东西,这让我相信这是可能的,但我没有看到任何结论。

克隆的元素有以下CSS,如果有帮助:

.mirror { 
    position: fixed !important; 
    margin: 0 !important; 
    z-index: 999999 !important; 
    opacity: 0.8; 
    pointer-events: none !important; 
} 

谢谢!

原来pointer-events: none不带触摸指针工作,只是没有以同样的方式。我永远无法可靠地用event.target来代表触摸指针下方的项目与鼠标事件的方式。

配置pointer-events: none上面提到的.mirror元素确实有用,但我不得不用document.elementFromPoint用事件坐标来获取底层元素。似乎性能较差,不够优雅,但它的性能没有明显下降。

document.elementFromPoint一个陷阱是,如果你已经结束的元素是在一个iframe中,你会得到iframe元素。然后,您必须获取iframe的文档,并在该文档上调用elementFromPoint(考虑iframe的左侧和顶部偏移量)。

这一切都可能看起来像一个混乱的烂摊子,但我希望别人发现它有用。