首页 > 解决方案 > 检测是否支持 beforeinput

问题描述

我在我的项目中使用了https://github.com/jaridmargolin/formatter.js库,发现它在移动设备上无法正常工作。

我的研究表明,这是由于它使用了按键,这是邪恶的,不应该使用。所以我决定修改它并在可用时使用“beforeinput”。这就是问题所在,我如何检测它是否可用?

我试过这个方法:https ://stackoverflow.com/a/2877424/13987708

但它不起作用。

在检查浏览器中支持的事件时,我的 Internet 搜索只显示了同一方法的一堆不同版本。而且我可以看到这种方法大多数时候都有效。它甚至适用于“input”事件,但不幸的是不适用于“beforeinput”事件。

我很想找到一种不依赖用户代理的方法,因为有人告诉我,这种方法非常不可靠。

// 编辑

好吧,我确实研究了这个问题,我什至在我的问题中这么说:duh:...

情况是“keypress”已被弃用,不应再使用,实际上在 Chrome for Android 中它甚至不再触发。

不过,上面提到的格式化用户输入的插件依赖于方法。

所以我继续用“keyup”方法替换它,它确实在 Chrome for Android 中触发,但只给出了 229 的 keyCode,所以它也不起作用。

我对整个键盘事件进行了更深入的研究,发现现代浏览器支持“beforeinput”事件(https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/beforeinput_event)。

太棒了,它为您提供了有关用户和您的输入之间交互的更多信息。

所以我调整了格式化程序以使用“beforeinput”事件而不是“keypress”,但是我的项目必须支持 IE,它不支持“beforeinput”。

这就是为什么我需要一种方法来检测浏览器是否支持此事件,并根据用户浏览器的功能使用“keypress”或“beforeinput”。

而且我知道浏览器可能支持用户不会使用的功能,但这与这个用例无关,我只需要知道浏览器是否会触发“beforeinput”事件。

标签: javascriptevents

解决方案


推荐阅读