javascript - 在 IE11 中使用指针事件时防止单击?

标签 javascript internet-explorer-11 pointer-events

我正在开发一个必须在 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() 以取消相应的鼠标事件。不幸的是,点击在最后完成并导致了问题。是否有任何内置方法可以禁止点击事件在最后触发?

最佳答案

我正在使用 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);
    }
}

关于javascript - 在 IE11 中使用指针事件时防止单击?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33639606/

相关文章:

javascript - 指针事件 IE11/Surface

css - 如何在 Firefox 和 Safari 中模拟 SVG `pointer-events: bounding-box`

javascript - 在自定义 JQuery 验证规则中读取非元素值的正确方法是什么?

javascript - JQuery 变量脚本

javascript - 使用 CSS 和 imgs 将 Javascript 库导入 CakePHP

Angular 2 - script5007 : Unable to get property 'apply' of undefined or null reference

javascript - Internet Explorer 11 : Object doesn't support property or method 'isInteger'

javascript - 为什么 Javascript sort() 函数没有给出预期的输出?

html - CSS字体系列不适用于IE11

javascript - 仅通过 svg 蒙版中的孔单击