gpt4 book ai didi

javascript - ASCII 控制字符 html 输入文本

转载 作者:太空狗 更新时间:2023-10-29 13:50:56 25 4
gpt4 key购买 nike

我正在尝试在 javascript 浏览器应用程序中处理来自条形码扫描器的输入。扫描器输出是一串字符,其中至少还包含一个组分隔符 (ASCII 29)。

当我将输入定向到 notepad++ 时,输入会正确显示,包括组分隔符。当我将输入定向到 <input type="text"> 时html 字段,Group Separator 对象丢失;它在现场既不可见,也无法用 javascript 代码检测到。

<input type="text">对象 chop ASCII 控制字符?知道如何避免这种情况吗?

编辑:我正在使用类似于 Raidox 答案的代码来实现此目的:

    inputField.onkeypress = catchGroupSeparatorAndEnter;
var fncChar = String.fromCharCode(29);

function catchGroupSeparatorAndEnter(event) {
if (event.ctrlKey && event.which === 29) {
inputField.value = inputField.value + fncChar;
event.preventDefault();
event.stopPropagation();
}
...
}

这似乎适用于 Chrome 和 Edge,但不适用于 Firefox。我不知道如何让它在那里工作。

最佳答案

在过去的一周里,我在工作中也一直在为这个问题苦苦挣扎,今天终于有了突破。我不知道你的条形码扫描仪是如何工作的,但我们的条形码扫描仪就像一个 USB 键盘,可以发送单独的按键。它确实发送 [GS] 的按键,但该事件会被浏览器自动取消。因此它永远不会到达输入事件,这是将字符添加到您的输入的事件。我想不出防止它取消的方法,但您可以通过在按键事件中手动将字符添加到输入来解决这个问题。

我不知道您的应用程序使用的是什么框架,但通过将其构建到自定义指令中,我能够使其与 AngularJS 一起使用。下面的示例只是 vanilla JavaScript,但您应该能够将它实现到您可能使用的任何框架中。

普通 JavaScript 示例

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Control Character Test</title>
</head>
<body>
<input type="text" id="tacos" />
<script>
document.getElementById('tacos').addEventListener('keypress', function(e) {
if (e.charCode === 29) {
this.value += String.fromCharCode(e.which);
}
});
</script>
</body>
</html>

您可以将上述代码保存到 HTML 文件中,以测试此方法是否适用于您的条码扫描器。如果这不起作用,另一种值得探索的可能性是重新编程您的条形码扫描器以发送每个按键,然后这种方法应该起作用。

另一个相关行为

在我的研究中,我还发现如果这些字符与其他字符同时发送,输入确实会接受这些字符。例如,我们有另一个条形码扫描仪,它把条形码数据作为一个事件发送。浏览器接受带有 [GS] 字符的输入。您也可以通过复制/粘贴来完成此操作。您也可以利用这种行为来获得您想要的东西。

浏览器问题

请记住,由于您使用的浏览器不同,您在使用这些方法时也可能会遇到问题。我们一次性发送所有数据的条形码扫描器是一个安卓设备。它有 2 个浏览器,chromium 和一个专有浏览器。 [GS] 字符出现在 chromium 中,但不是专有浏览器。

希望这对您有所帮助!

关于javascript - ASCII 控制字符 html 输入文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48296955/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com