取消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,可能吗?的主要内容,如果未能解决你的问题,请参考以下文章