9

我正在开发一个必须在 IE11 和 Edge 上运行的 JavaScript 应用程序。在 IE11 中,我看到的事件链(从https://patrickhlauke.github.io/touch/tests/results/复制)如下:

pointerover > mouseover > pointerenter > mouseenter > pointerdown > mousedown > (pointermove > mousemove)+ > pointerup > mouseup > (lostpointercapture) > pointerout > mouseout > pointerleave > mouseleave > focus > click

该应用程序已经连接起来以处理鼠标和触摸事件,因此我在所有指针事件上调用 preventDefault() 以取消相应的鼠标事件。不幸的是,点击最终出现并导致问题。是否有任何内置方法可以禁用最后触发的点击事件?

4

1 回答 1

1

我正在使用 jQuery Pointer Events Polyfill ( https://github.com/jquery/PEP ) 在 Webkit 浏览器上使用“pointerup”事件,我遇到了类似的问题。就我而言,我必须阻止链接被跟踪。

我通过在“pointerup”被触发后添加一个“click”事件监听器解决了这个问题,然后阻止了“click”事件并删除了它的监听器。像这样:

var myLink = document.getElementsByClassName("myLink")[0];

myLink.addEventListener("pointerup", handleLinkPress);

function handleLinkPress(evt) {
    // do something here...

    evt.target.addEventListener("click", unfollowLink);

    function unfollowLink(evt) {
        evt.preventDefault();
        evt.target.removeEventListener("click", unfollowLink);
    }
}
于 2016-12-21T01:23:09.950 回答