在装有 IE9 和多点触控屏幕(如 HP TouchSmart)的 Windows 7 计算机上,如果您触摸屏幕上的页面高度足以显示滚动条,然后向上或向下移动手指,页面就会滚动。这似乎不会触发任何 mousemove
事件。如果您触摸屏幕并最初向左或向右移动而不是上下移动,它会触发 mousemouse
事件。
我不想取消此滚动并导致浏览器调用正常的 mousemove
事件。这可能吗?
编辑:IE9 中似乎没有触摸事件 Does IE9 support Touch events on Windows 7?
编辑 2:
关于此的其他几个兴趣点。首先是浏览器经常在手势触发滚动时触发 mousewheel
事件,这通常可以被捕获和取消。其次,在这种特殊情况下,您可以使用此 hack $(document).bind('mousedown mouseup click dblclick', function (e) { });
防止在 IE9 上滚动有时会,对我来说没有任何意义 - 可能可以使用更少的事件绑定(bind),但我没有很好地访问设备来轻松测试。
最佳答案
在花了一些时间测试了各种抑制默认事件响应的方法之后,我不知道如何抑制滚动事件。但是,您应该能够从滚动事件处理程序中触发 mousemove 事件。
window.onscroll = function(e){
element.onmousemove();
}
//jquery
$(window).scroll(function(e){ element.mousemove(); } );
我认为有两件事你可以尝试阻止自动滚动:将溢出(或溢出-y)设置为隐藏在你的 body 元素上或作为你的 onscroll 处理程序的一部分,试图滚动回到你的原点。将 body 的溢出设置为隐藏将阻止滚动并隐藏滚动条,但我不确定这是你想要的。
关于javascript - 取消 IE9 触摸滚动事件并调用 Mousemove,可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9202804/