拖放 - 使用指针事件通过触摸元素:无
问题描述:
我与非本地阻力试验和使用触摸和鼠标事件下降。拖放 - 使用指针事件通过触摸元素:无
我采用的方法是克隆拖动源和移动克隆。所有事件都附加到文档中。克隆得到CSS应用的pointer-events: none
允许克隆下的元素算作一个mousemove
或touchmove
事件的事件目标,而不是克隆本身。
这在所有的桌面浏览器的伟大工程(鼠标),但似乎并没有在使用单点触摸,在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的左侧和顶部偏移量)。
这一切都可能看起来像一个混乱的烂摊子,但我希望别人发现它有用。