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

时间:2012-02-08 22:54:06

标签: javascript javascript-events internet-explorer-9 touch

在具有IE9的Windows 7计算机和多点触控屏幕(如HP TouchSmart)上,如果您触摸的页面高度足以有滚动条并向上或向下移动手指页面滚动。这似乎没有触发任何mousemove事件。如果您触摸屏幕并且最初向左或向右移动而不是向上和向下移动,则会触发鼠标事件。

我不想取消此滚动并导致浏览器调用正常的mousemove事件。这可能吗?

编辑:IE9中似乎没有触摸事件Does IE9 support Touch events on Windows 7?

编辑2: 关于此,还有其他一些兴趣点。首先,浏览器经常在手势触发滚动时触发鼠标滚轮事件,这通常可以被捕获和取消。其次是在这种特殊情况下,你可以阻止在IE9上滚动这个hack $(document).bind('mousedown mouseup click dblclick', function (e) { });,这有时候就像黑客一样,对我来说没有任何意义 - 可能会使用更少的事件绑定,但我没有'可以很好地访问设备以轻松测试。

3 个答案:

答案 0 :(得分:1)

在花了一些时间测试各种方法来抑制默认事件响应后,我不知道如何抑制滚动事件。但是,您应该能够从滚动事件处理程序中触发mousemove事件。

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

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

A primitive example

我认为您可以尝试阻止自动滚动的两件事:将溢出(或溢出-y)设置为隐藏在您的body元素上或作为onscroll handler的一部分,尝试滚动回原点。将body的溢出设置为hidden会阻止滚动并隐藏滚动条,但我不确定它是你想要的。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

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

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