我有一个网页,用户应该可以在任何地方输入并跟踪他们的输入。一个问题是 firefox 中的斜线键“/”是打开搜索的快捷方式。这对我来说是不可取的。我还没有找到一种方法来捕获搜索功能并且仍然将输入添加到我的跟踪中。我在 keypress
上将输入添加到堆栈。
keydown
...preventDefault
在 FireFox 中效果最好,但问题是在 Chrome 中,keypress
由于某种原因没有触发(不确定为什么 preventDefault
会阻止它,但确实如此)。如果我可以自己将斜杠添加到输入堆栈,这会没问题。但是 Firefox 已经添加了它,因为 keypress
仍然被触发。 stopPropagation
也不会阻止 keypress
在 FireFox 中触发。 $(document).keypress(e)
在 keydown
方法中也什么都不做。
我遇到的另一个问题是“退格键”应该从堆栈中删除,但我使用 String.fromCharCode(e.which)
添加到堆栈并将数据添加到 input type="text"
用户可以看到的字段。在 Chrome 中,这完美地工作,但在 FireFox 中,它添加了一个代表退格键的字符,然后立即将其删除,以防止删除另一个字符。输入中有“backspace”和“f5”等字符也是不可取的。有没有办法判断 fromCharCode
值是否对文本字段有效?我认为正在发生的事情是 Chrome 会自动执行此操作。
编辑:这可能有帮助,但 FireFox 显然会在我的网页上触发 keypress
之前的 keydown
(Chrome 则相反)。这是不寻常的。
最佳答案
解决了这个问题。我有一个触发捕获斜杠的 noslash
变量:
else if (e.which == '191' && !noslash) {
e.preventDefault();
$typing.val($typing.val() + '/');
}
至于第二部分的问题,我干脆拒绝
[^-a-z0-9`~!@#$%^&*()_+=\\|/'";:,<.>?\[\]{}]
关于javascript - 协调 Firefox 斜杠处理和键代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8948176/