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

问题描述 投票:3回答:3

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

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

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

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

javascript touch internet-explorer-9 dom-events
3个回答
1
投票

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

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

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

A 朴素的例子.

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


0
投票

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


0
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.