【发布时间】:2018-05-27 06:02:36
【问题描述】:
在任何桌面浏览器上都很容易。我只听keydown 的document 或window,然后打电话给preventDefault,就像答案here 和here 一样。
我通常使用这样的东西,所以就像忽略所有键盘输入:
window.addEventListener('keydown', function(e){
e.preventDefault();
e.stopPropagation();
e.stopImmediatePropagation();
}, true);
但它们不适用于我的 Android 平板电脑。 (在适用于 Android 的 Chrome 63.0.3239.83 和 Firefox 57.0.1 上测试)
这是典型的场景:我有一个 <input> 作为当前活动元素,然后我需要执行一些 JavaScript 来冻结用户界面,以便忽略所有用户输入。
我在这个问题上浪费了很多时间,但仍然找不到适用于我的 Android 平板电脑的解决方法。
我考虑了其他一些方法,比如将焦点更改为另一个元素,或者将元素的readOnly 设置为true。但有一些警告。调用focus() 会触发先前聚焦元素的onblur。设置readOnly 不会阻止焦点元素的事件侦听器触发(例如,<input> 的任何keydown 或keyup 处理程序),有时回车键会变成允许用户跳转到下一个的键页面上的输入字段。
有没有一种方法可以忽略 Android 版 Chrome 上的所有键盘输入而不会产生不良副作用?
【问题讨论】:
标签: javascript android browser keyboard dom-events