首页 > 其他分享 >快来测试下你的输入法正不正经 - 一个@引发的血案正在上映~

快来测试下你的输入法正不正经 - 一个@引发的血案正在上映~

时间:2022-11-08 17:06:36浏览次数:39  
标签:不正经 输入法 血案 BUG MAC 拼音输入 测试 keyCode

事情是这样式儿滴~~~~

在IM工具、Wiki文档中我们经常使用​​@​​​符号来做提及人、提及文档的功能,最近胡哥就是在做这个业务需求的时候被​​@​​这个符号坑惨了。

PM想要的效果大概是这样:当用户输入​​@​​后,能够响应一系列的推荐结果。

快来测试下你的输入法正不正经 - 一个@引发的血案正在上映~_ico

沟通完需求,PM习惯性的描述了老板催的紧,要排期,我在脸上努力挤出一副苦大仇深的样子,不情不愿的说道“我争取1天完成吧”,内心则甚是窃喜:“就这功能,监听个keydown事件,判断是@符号不就完了!半天时间足够了,还能摸鱼半天,哈哈哈~”

TIPS: 这里后端接口是已经完备的,所以没什么阻塞需求的地方。

整活,提测~

项目是vue环境下,没别的,监听键盘事件,开始整活~

<template>
<input type="text" @keyup="atHandler" />
</template>

<script>
export default {
methods: {
atHandler (e) {
// 使用e.keyCode来判断是否是@符号 ===> 50
// 或者使用ascii码值 64表示@符号,使用charCodeAt()转为Unicode字符,ASCII码
switch (e.keyCode) {
case 50:
if (e.key === '@') {
// balabala...
console.log('你按下了@符号');
// 处理业务逻辑
// 唤起提及人浮窗
}
break;

default:
break;
}

}
}
}
</script>

本地测试没问题,Call测试同学,提测,走你,开始​​摸鱼~​​。

附ASCII码表:

快来测试下你的输入法正不正经 - 一个@引发的血案正在上映~_ico_02

测试 - 天生具备BUG体质

整摸鱼开心,忽然看到IM上,测试同学在Call,说是有BUG!输入​​@​​符号后,无法唤起提及人浮窗!瞬间就懵逼了!

和测试一顿拉扯,最后测试同学提交了一份视频,明明白白有这个现象,确实没有唤起浮窗!

又找了些其他同学的电脑,进行了相同的测试,发现都没有问题。而且这段代码逻辑确实非常简单呀,既然有能唤起的,说明逻辑是正确的,但是在测试同学的电脑上是100%复现的,对她来说这个功能就是100%不可用的。

本着用户体验之上原则,在测试同学电脑上专门debug了一下,打印了​​@​​​的​​e.keyCode​​​竟然不是​​50​​​,而且通过​​charCodeAt​​​转换出来的ASCII码也不是​​64​​!!!。

每个字符都会对应相应固定的ASCII码,Unicode字符呀,怎么还有不一致的时候呢?!

这不应该呀,这就相当于​​1+1​​​忽然间不等于​​2​​了。

这真是离了个大谱!!!

简直挑战了一个前端开发的底线了有没有~~~

坑爹的输入法

当问题出现的时候,没有任何一个环节是无辜的!

复现该测试同学的所有环境:

  1. ​windows​​​电脑
    印象中也没有关于windows电脑会有这个兼容性呀!本着宁杀错,不放过原则。对照组实验搞起来! 找了另外2台windows电脑,都没有复现这个BUG!
    说明了Windows系统没有关系呀!

这个时候,稍稍感觉今天被针对了,什么莫名其妙的BUG!

  1. 输入的@符号会有不同吗?看起来是一样的呀!
    感谢伟大的“实事求是”精神,测试出BUG的同学使用的是​​QQ拼音输入法​​,其他Windows电脑使用的是​​搜狗拼音输入法​​,现在输入法成了新的实验变量。
    快速的安装了​​QQ拼音输入法​​,果然,BUG必现!

为啥这个问题,这么不好找呢。是因为QQ拼音输入法不支持在Mac上用,相对搜狗比较小众些。

  1. 此时此刻,可以看到输入的都是​​@​​字符,肉眼无法分辨,但是从根本上来说,这个​​QQ拼音输入法​​输入的字符绝对不是标准的​​@​​对应的Unicode字符。

如果有搞测试输入法的同学,一定不吝赐教,给解释下!

问题原因定位了,既然没有办法让所有的用户都不用QQ拼音输入法,即使能,也可能存在其他输入法引起这个问题!只能做兼容性处理了,为了安全起见,让测试的同学安装测试了市面上常见的输入法!

以下是常见输入法在不同系统输出@字符的keyCode值和ASCII码值

输入法名称

系统

key值

keyCode值

ASCII码值

ABC输入法

MAC

@

50

64

简体拼音输入法

MAC

@

50

64

搜狗输入法

MAC

@

50

64

百度拼音输入法

MAC

@

50

64

百度拼音输入法

Windows

Process

229

66

微软拼音输入法

MAC

@

50

64

微软拼音输入法

MAC

@

50

64

QQ拼音输入法

Windows

Process

229

66

讯飞输入法

Windows

Process

229

66

欢迎大家补充

兼容方案处理

在使用keyCode监听时,除了​​50​​​之外,同时监听​​229​​,保证各个输入法下都能正确响应事件。

export default {
methods: {
atHandler (e) {
switch (e.keyCode) {
case 50:
case 229:
if (e.key === '@' || e.key === 'Process') {
// balabala...
// 处理业务逻辑
// 唤起提及人浮窗
}
break;

default:
break;
}

}
}
}

提交测试,完美通过!继续摸鱼!

快来测试下你的输入法正不正经!!!

在排查BUG的过程中,非常有意思的一个体验!我也写了个Demo程序来测一测你的输入法是不是正经输入法!希望你再遇到相同需求的时候,不会手忙脚乱!

码上掘金地址:

代码片段

CodeSandBox地址:​​不正经地址传送门​​

上效果图:

快来测试下你的输入法正不正经 - 一个@引发的血案正在上映~_ico_03

大家快来体验体验吧,欢迎在评论区发你的不正经输入法效果截图!大声说出你的系统和输入法!


标签:不正经,输入法,血案,BUG,MAC,拼音输入,测试,keyCode
From: https://blog.51cto.com/huge/5833750

相关文章

  • keepass关闭输入法自动执行自动输入
    背景:自动输入账号需要切换到英文状态,否则会噼里啪啦输入一堆中文内容使用IIME.plgx插件可自动关闭输入法,再输入字段可解决这个问题插件地址:https://github.com/iuuniang/......
  • contentEditable 富文本,中文输入法触发多次oninput事件解决办法
    1. contentEditable富文本,没有onchange事件,有oninput事件,但是遇见中文输入法时,会触发多次,而我们只想输入结束时触发。那我们需要用到compositionstart和compositionend事......
  • 解决Ubuntu 20.04下VS code无法使用中文输入法的问题
    技术背景在Ubuntu20.04下,如果从应用商城中直接下载VScode,有可能会导致无法使用中文输入法的问题,那么就只能从其他地方写了中文再复制过来,非常的麻烦。从一些文章中收集......
  • 小狼毫输入法的详细配置大全
    小狼毫输入法的详细配置大全       1.安装在官网(https://rime.im/download/)下载并安装。这个路径有所有配置菜单的快捷方式。C:\ProgramData\Microsoft......
  • 为什么用搜狗输入法
    好用,兼跨平台。电脑、手机上用一样的输入法,即保留了使用习惯,也避免重新学习的麻烦。手机端还有翻译、语音输入等功能,很实用。......
  • Linux:RedHat8 设置中文输入法
    RadHat8自带中文输入法,只是默认没有使用。1.切换视图,搜索:Language快捷键:Win+Tab2.添加输入法3.切换输入法的快捷键super(Win)+空格 -----------------------------......
  • LTSC 2021 CPU占用高、中文输入法不显示选字框的解决办法
    部分朋友在安装好LTSC2021后,可能会发现中文输入法不显示选字框,与此同时CPU占用很高的问题。这是因为在LTSC2021中,微软删除了Windows功能体验包的依赖组件,导致系......
  • Linux:RedHat8 设置中文输入法
    RadHat8自带中文输入法,只是默认没有使用。1.切换视图,搜索:Language快捷键:Win+Tab2.添加输入法3.切换输入法的快捷键super(Win)+空格 ......
  • 乌班图学习笔记4:中文输入法设置
    乌班图学习笔记4:中文输入_来自金沙江的小鱼_新浪博客(sina.com.cn)上面是我在新浪博客的链接,为了避免服务关闭,我在这里也记录一遍。如果是windows系统,像输入中文的话,可......
  • C# 输入法切换 C#中FormClosing与FormClosed的区别详细解析
    引用///<summary>///输入法切ENG///</summary>publicvoidChangeENG(){WinAPI.PostMessage(WinAPI.HWND_BROADC......