取消IE9触摸滚动事件并调用Mousemove,可能吗?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了取消IE9触摸滚动事件并调用Mousemove,可能吗?相关的知识,希望对你有一定的参考价值。

在一台装有IE9和多点触控屏幕(如HP TouchSmart)的Windows 7电脑上,如果你在一个有足够高的滚动条的页面上触摸屏幕,并向上或向下移动手指,页面就会滚动。这似乎并不火任何 mousemove 事件。如果你触摸屏幕,并且最初向左或向右移动,而不是上下移动,它确实会启动 mousemouse 事件。

我想取消这个滚动,并使浏览器调用一个正常的 mousemove 事件。这可能吗?

EDIT:IE9中似乎没有触摸事件。IE9在Windows7上支持触摸事件吗?

EDIT 2:关于这个问题,还有几点值得关注。首先是浏览器经常会发射一个 mousewheel 事件,当滚动被手势触发时,这通常可以被捕获和取消。其次是在这种特殊情况下,你可以通过这个黑客来防止IE9上的滚动。$(document).bind('mousedown mouseup click dblclick', function (e) { }); 这正如黑客有时所做的那样,对我来说没有任何意义--也许可以使用较少的事件绑定,但我没有很好地接触到一个设备来轻松测试。

答案

在花了一些时间测试各种抑制默认事件响应的方法后,我不知道如何抑制滚动事件。 不过,你应该能够在滚动事件处理程序中启动鼠标移动事件。

window.onscroll = function(e){
    element.onmousemove();
}

//jquery
$(window).scroll(function(e){ element.mousemove(); } );

A 朴素的例子.

我想有两种方法可以防止自动滚动:将body元素的溢出(或溢出-y)设置为隐藏,或者作为onscroll handler的一部分,尝试滚动回原点。 将body的溢出设置为hidden可以防止滚动并隐藏滚动条,但我不确定这是否是你想要的。

另一答案

试试触摸事件而不是鼠标事件。

另一答案

我在iPad上也遇到了同样的问题。我不得不在 touchmove 事件中添加一个 e.preventDefault();。我只在跟踪交互的div上做了这个动作。 到整个页面。

element.ontouchmove = function(e){ e.preventDefault(); };

不知道你的设备,但可能值得一试。

以上是关于取消IE9触摸滚动事件并调用Mousemove,可能吗?的主要内容,如果未能解决你的问题,请参考以下文章

UIScrollView 事件处理

如何避免 Touches 取消事件?

在 UIButton 上实现触摸取消

触摸移动卡住 忽略取消触摸移动的尝试

检测 WM_MOUSEMOVE 是不是由触摸/笔引起

javaScript事件事件类型之触摸与手势事件