为什么某些 Web 应用程序会禁用 Numpad 输入?
这个答案只是推测性的,但在我做了一些挖掘之后,这对我来说是最可能的解决方案。
编码人员希望禁止在 Web 表单的某些字段中输入数值。为此,他们使用了类似这里的 keyCode 值。键盘上的每个键都有一个特定的代码,因此它的输入可以用一个 ID 来识别。小键盘和数字键 - 尽管提供相同的输入(数字) - 具有不同的 keyCodes。
数字键的 keyCode 值为 0 - 9,数字键盘的值为 96 - 105。
为使无法通过键盘输入数值,禁止输入所有键码值为 0 - 9和96 - 105 的键,从而禁用小键盘。
我有一个基于@TomK 答案的推测性答案。
IMO 这不是安全实践/剧院,而是软件中的错误,即开发人员未能实现其预期行为。
正如 TomK 所说,每把钥匙都有一个密码。Skrill 的开发人员希望您在某个字段中只输入数字。如果您熟悉 HTML、Angular、jQuery 等,您就会知道有很多好方法可以将输入限制为数值。通过“数字”,重要的是,我并不一定意味着该值是一个数字,而是它可能是一个由数字组成的字符串(例如邮政编码 00144 不是144;一个数字可能是 114.3 这不是一个邮政编码,等等.)。
因此,虽然有很多合理且有信誉的方法可以将输入限制为数字,但可能开发人员强迫 Javascript 拒绝所有不是的[0-9]
,但失败了,因为他们正在查看键的 ID,而不是用户输入的值.
在 Angularjs 中,你会做
<input ng-pattern="^[0-9]+$">
它接受来自数字行和键盘的笔划。
我不知道您是否使用了禁用某些网站上的 Number Lock 的互联网安全软件或杀毒软件。我已经阅读了许多来自软件公司的帖子,这些帖子都解决了这些问题。他们的推理主要是出于对键盘记录的关注。我个人从未遇到过此类问题,因此有关该问题的任何进一步细节都会有所帮助。我发现 Number Lock 存在的唯一问题是,如果您需要使用两次按键来打开或关闭它,或者它是否已在操作系统设置或 BIOS 设置中被禁用。