如何启用指针事件

时间:2016-07-12 07:26:24

标签: javascript pointer-events

我注意到在我的角度应用程序中属性

window.navigator.pointerEnabled

返回true

现在,因为我想在jsfiddle。net中进行一些涉及指针事件的测试,我注意到这些事件不存在。这可能与pointerEnabled属性为undefined

的事实有关

我的问题是,如何控制此属性,我该如何启用它?

2 个答案:

答案 0 :(得分:0)

Pointer events提供了一种使用一个界面处理鼠标和触摸事件的新方法。对指针事件的支持目前仍然相当稀少。目前,IE11和Edge都有直接支持,IE10带有前缀。 FF和Chrome(> = 53)正在积极开发它并将其隐藏在标志后面(参见:chrome://flags/#enable-pointer-events)。 从Safari到目前为止还没有公开信号。

无法为您的用户激活或停用它。浏览器支持或不支持。

window.navigator.pointerEnabled是用于检查浏览器是否支持它的弃用方式。建议的方法是检查是否定义了window.PointerEvent

polyfill,支持FF,CH,IE10和Safari。

答案 1 :(得分:0)

如果您在Firefox中测试代码,则需要配置浏览器以启用指针事件,因为此时默认情况下它们未启用(我目前的最新升级时间为2017.xi.15是Firefox Quantum 57.0.2(64位),我在这里发布的内容可能会在以后的版本中发生变化!)。

为此,您必须启动一个新选项卡,并在地址栏中键入“about:config”。然后,搜索条目:

dom.w3c_pointer_events.enabled

并将此布尔值的状态更改为true。

除非你这样做,否则Firefox将不会处理所有的指针事件。这可能会在未来发生变化,但目前,如果您对跨浏览器兼容性感兴趣,请注意指针事件处理可能是一个雷区。例如,在我的机器上运行的最新版本的Chrome,即版本63.0.3239.84(官方构建)(64位),处理指针事件而无需深入和重新配置浏览器,但Firefox让我头疼不已。我发现了上面的配置问题,类似的问题也可能出现在其他浏览器上。

只是为了解决这个问题,Windows版本的Firefox允许您启用指针事件,但它们在Firefox Mobile for Android版本的浏览器上完全支持 。因此,当一个人改变平台时,同样的浏览器可能会有不同的行为,只是为了增加你的编码噩梦。

我不熟悉Safari或Opera,但建议用户强烈检查在使用指针事件时是否适用类似的支持问题!

因此,如果浏览器没有从一开始就启用指针事件,那么无论是本机还是通过Angular等框架尝试处理指针事件都无关紧要。我在这个问题上浪费了几个小时,并认为让其他人同样沮丧是个好主意。

当然,这将解决您的最终用户不知道此的问题,并且当他们尝试在不配置他们的情况下运行它时,您的应用在系统上失败了浏览器这样做。或者更糟糕的是,您的应用程序失败,因为他们的浏览器根本不支持指针事件(例如,上面引用的Android版Firefox Mobile)。最终用户希望应用程序能够开箱即用,无论他们的硬件和硬件是什么。浏览器选择,除了要实现这一点,你目前还有讨厌的障碍。其中一个是触摸事件支持隐藏在Firefox的配置标志后面,所以你甚至不能保证在不支持指针事件的情况下退回单独的触摸事件,将保存你的应用程序失败。

目前,唯一能够在这方面保持跨平台一致性的主要浏览器是Chrome。当我启动Chrome时,使用指针事件编写的代码在桌面计算机和平板电脑上都有效,但我现在意识到,当我尝试运行代码时,Firefox会让我头疼。片剂。

除了上面的等待你之外,还有潜在的其他问题(特别是如果你正在使用新的CSS指针事件功能!)但是它们在其他地方被正确保留。