IE 11延迟触摸事件(3秒)

时间:2014-07-08 17:19:20

标签: javascript internet-explorer touch hammer.js pointer-events

下面的代码是我正在尝试做的非常简单的版本。我正在尝试在按下元素时触发循环功能。这是用于触摸屏,因此在制作中我实际上使用hammer.js来统一触摸听众。这种奇怪的事情发生在IE 11中。 实际指针事件直到上下文'circle'(显示您在浏览器上按下手指的小浏览器动画)完成其打开上下文菜单的尝试之后才会触发。

如果快速按下并释放,则指针事件和指针事件将连续触发,并伴随一个循环。

这只发生在IE 11中,chrome表现得像我期望的那样。鼠标事件(以及手指触摸屏幕,而不是鼠标)也会发生这种情况,并且它会发生在hammer.js触摸和释放事件中。

毫不奇怪,如果“手指”在按住的同时移动,脚本将按预期工作,并且上下文菜单“circle”将不会尝试打开。

var timer;

$('.pan-button').on('touchstart pointerdown',down).on('touchend pointerup',up);

function down(e){
        console.log(e.type);
        $(this).attr('oncontextmenu', 'return false');
        var self = this;
        this.loop = function(){
            console.log('loop');
            timer = setTimeout(function(){self.loop();},100);
        }
        this.loop();
    }

function up(e){
        console.log(e.type);
        clearTimeout(timer);
    }

我应该澄清一下,这只发生在Windows 7中.Windows 8的行为与我预期的一样。相同版本的IE 11.0.9600。我也尝试过e.stopPropagation()并尝试在元素和身体上触发鼠标移动,这可能会使浏览器误认为手指已移动。

我知道这似乎是一个边缘案例,但不幸的是,我有点担心需要让这个项目在这个特定的操作系统/浏览器组合中工作。

0 个答案:

没有答案