javascript - 检测是否支持 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”事件。
解决方案
推荐阅读
- qt - Qt:将“setContextProperty”与“QObject”和“JavaScriptOwnership”一起使用会导致项目被收集/删除
- javascript - 在 JavaScript 中合并两个字符串映射
- sql - 选择一行,然后根据该行中的值选择更多行
- c++ - 我在我的头文件中的 DNode 未被识别为数据类型
- python - 使用 Python 操作 XML
- python - 检查字符串是否在文件中
- spring-boot - 如何在 SpringBoot 中向从库中导入的实体添加实体侦听器
- python - Python - 单击带有 Selenium 的按钮
- node.js - AJAX > MongoDB 查询只工作五次,然后服务器停止处理请求,我无法刷新页面
- python - 如何将 Nonetype 放入列表中?