【问题标题】:Pointerup event isn't working correctly with Windows Phone 8.1 / IE11Pointerup 事件在 Windows Phone 8.1 / IE11 中无法正常工作
【发布时间】:2016-03-20 06:00:05
【问题描述】:
pointerup 事件在 Win Windows Phone 8.1 和 Internet Explorer 11 中无法正常工作。我的意思是,它是自动触发的(就在指针按下之后),而不是在手指伸出时触发。
我已经完成了 example here。
如果您使用桌面浏览器或 Android-Chrome 或 iOS-Chrome/Safai 测试它是否正常工作
有没有人可以解决这个问题?
【问题讨论】:
标签:
windows-phone
windows-phone-8.1
internet-explorer-11
【解决方案1】:
您收到pointercancel 事件了吗?
如果您没有正确设置touch-action,则pointercancel 会在pointerdown 之后立即发送。我认为这是因为浏览器认为已经启动了滚动等操作。
为了避免这种情况,我们使用:
html.is-pointer-events .touch-grip {
-ms-touch-action: none;
touch-action: none;
}
请注意,我们仅在使用 Microsoft 指针事件时激活此规则,否则 touch-action 属性会干扰其他浏览器(例如 Chrome)。
如果navigator.msPointerEnabled 为真,我们将is-pointer-events 添加到document.documentElement.className(即,当我们使用onpointerdown 而不是ontouchstart 时添加类)。如果您使用的是modernizr.js,那么它看起来提供了一个您可以使用的pointerevents 类。
除非您对它们有迫切的需求,并且您有能力为此投入大量资金,否则我强烈建议您不要支持 Microsoft 指针事件。对我们来说,支持它们一直是我们头疼的问题,而返回的价值对我们来说是微乎其微的。