我遇到了一些问题,导致浏览器无法通过触发诸如“ alt + 1”,“ alt + 2”之类的快捷方式在“ textarea”和“ input”元素内创建表情符号。

该代码禁止与上述元素进行任何交互,但是'alt + 1'仍然会产生笑脸。在Chrome和Edge上进行了测试。我想念什么吗?

'use strict';
(() => {
  document.onkeydown = document.onkeypress = document.onkeyup = ev => {
    ev.stopPropagation();
    ev.preventDefault();
    return false;
  }
})();


https://jsfiddle.net/9Lr0hays/1/

注意:我不想直接与元素进行交互(使用选择器)。

我在谈论这些符号:
http://www.alt-codes.net/

相关:Disable Alt Codes/Characters with JavaScript

最佳答案

解决此问题的一种可能的方法是检查密钥。

<input type="text" id="number" onkeypress="return iskey(event);" />
<script>
function iskey(evt) {
    var theEvent = evt || window.event;
    var theVal = theEvent.target.value;
    var key = theEvent.keyCode || theEvent.which;

    key = String.fromCharCode(key);

    if (key.length == 0) return;
        if (theEvent.preventDefault) theEvent.preventDefault();
        return false;
}
</script>


在这里工作:https://jsfiddle.net/1569atLz/23/

09-25 12:21