V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
JackalZhao
V2EX  ›  问与答

求助:在 iOS 设备上浏览器中使用语音输入时遇到的不一致的输入事件

  •  
  •   JackalZhao · 2023-04-05 22:06:16 +08:00 · 726 次点击
    这是一个创建于 626 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我写了一个脚本,绑定一个 http 服务,用另一个设备的浏览器打开后,在里面输入文本,可以捕获输入文本、按键,同步到 server 端。主要用途是:在电脑上运行这个服务,在手机浏览器上打开这个页面,在手机端进行语音输入,将键入事件同步到电脑端。

    相关代码在:github: web_remote_input

    使用图片:i8dxet.png

    在安卓上时,在输入框里使用语音输入,这个输入框会收到 insertFromComposition 类型的 input 事件。

    但在 iOS 设备上,用原生输入法的语音输入功能,出了意外,会收到一系列的 insertText 事件,但没有收到任何 deleteContentBackward 事件。然而,输入框中的文本的表现是之前输入的文本被更新了。

    当我用语音输入说 「快速地飞过。」 时,这是事件记录:

    before_input_event: {'inputType': 'insertText', 'data': '快', 'targetValue': ''}
    input_event: {'inputType': 'insertText', 'data': '快', 'targetValue': '快'}
    
    before_input_event: {'inputType': 'insertText', 'data': '快速', 'targetValue': '快'}
    input_event: {'inputType': 'insertText', 'data': '快速', 'targetValue': '快速'}
    
    before_input_event: {'inputType': 'insertText', 'data': '快速。', 'targetValue': '快速'}
    input_event: {'inputType': 'insertText', 'data': '快速。', 'targetValue': '快速。'}
    
    before_input_event: {'inputType': 'insertText', 'data': '快速的。', 'targetValue': '快速。'}
    input_event: {'inputType': 'insertText', 'data': '快速的。', 'targetValue': '快速的。'}
    
    before_input_event: {'inputType': 'insertText', 'data': '快速地飞过。', 'targetValue': '快速的。'}
    input_event: {'inputType': 'insertText', 'data': '快速地飞过。', 'targetValue': '快速地飞过。'}
    
    before_input_event: {'inputType': 'insertText', 'data': '快速地飞过。', 'targetValue': '快速地飞过。'}
    input_event: {'inputType': 'insertText', 'data': '快速地飞过。', 'targetValue': '快速地飞过。'}
    

    根据这些事件,如果同步到电脑端,则输出会是 "快快速快速。快速的。快速地飞过。快速地飞过。"。然而,实际手机端输入框中的文本是 「快速地飞过。」。

    我的猜想是,可能有我没有捕获到的其他事件,允许语音输入直接覆盖之前输入的文本。有没有办法捕获原始更新操作,或者了解为什么输入事件与输入框中的实际文本不一致?

    1 条回复    2023-04-06 00:32:03 +08:00
    dengshen
        1
    dengshen  
       2023-04-06 00:32:03 +08:00
    给事件加个防抖?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2767 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 09:28 · PVG 17:28 · LAX 01:28 · JFK 04:28
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.