道招

electron应用更新版本后的拼写检查失效?原来一行代码就搞定

如果您发现本文排版有问题,可以先点击下面的链接切换至老版进行查看!!!

electron应用更新版本后的拼写检查失效?原来一行代码就搞定

小组的项目半个月前更新了一个小版本,然后大家纷纷问我是改了啥? 我也一脸懵逼啊,我啥以没干啊,那个小版本里面有我这边的一个紧急需求,这个“锅”我推都不好推,只能怪运气不好。

本来指望小组负责electron部分的同事来牵头解决的,虽然报障是从我复制的邮件这边开始报障的,主要是因为邮件客服比较依赖这个功能吧,功能失效了写英语也没底气了,直接报障了。 但是懂行的都知道,这个不是前端仔随便就能干预的功能,所以需要在electron层来想解决方案。

后面几天我还在码需求,改bug呢,临近发版前总算有些许闲暇,毕竟即使有无关紧要的bug也不宜再匆忙改代码了。 同事太忙也一直没时间跟进这个故障,那只能自己来了。

自己凭借个人经验开始了自己的故障定位之旅。

1、从electron官方SpellChecker模块了解到hunspell dictionary,它默认从Google CDN下载下来的。

file

猜测下载失败可能会影响拼写检查,了解相关知识点准备验证猜想

2、从项目spellcheck关键词,发现有spellcheck-dictionary相关的事件

file

尝试在项目加入监听electron抛出的spellcheck-dictionary-download-beginspellcheck-dictionary-download-successspellcheck-dictionary-download-failurespellcheck-dictionary-download-initialized等事件

发现监听到spellcheck-dictionary-download-beginspellcheck-dictionary-download-failure,无spellcheck-dictionary-download-successspellcheck-dictionary-download-initialized事件,确定spellcheck-dictionary的确下载失败

file

3、从网上搜索及electron源码了解到字典文件位于electron个人目录下的Dictionaries文件夹内,尝试在拼写检查未失效的electron应用中删除该文件,电脑提示该资源被electron应用占用,确定Dictionaries内的字典文件为electron应用使用

file

file

4、根据文档尝试setSpellCheckerDictionaryDownloadURL干预spellcheck-dictionary的下载地址,因具体待下载的语言词典文件名信息不确定,先本地用http-server启一个服务,测试setSpellCheckerDictionaryDownloadURL如何生效以及electron下载字典请求的url信息

在创建window时加入 newWindow.webContents.session.setSpellCheckerDictionaryDownloadURL('http://127.0.0.1:8080/');

file

确认本地服务器接收到electron的下载请求,并且请求url形如 http://127.0.0.1:8080//en-us-9-0.bdic

5、寻找拼写检查字典en-us-9-0.bdic文件,从其它未失效的用户电脑复制或从互联网搜索,验证字典下载能否成功

file

成功接收到spellcheck-dictionary-download-successspellcheck-dictionary-download-initialized事件,同时Dictionaries文件夹内成功下载字典文件

file

6、mcd重新打包,再次验证上述改动

setSpellCheckerDictionaryDownloadURL设置为能成功下载字典文件的外网url服务地址

newWindow.webContents.session.setSpellCheckerDictionaryDownloadURL('https://wp-img.daozhao.com/im_dict/');

改动后的新版安装包拼写检查功能正常

7、获取拼写检查其它语言对应的字典文件名信息

file

8、优化代码,正式修复

总结

大胆假设,小心求证

更新时间:
上一篇:下一篇:

相关文章

关注道招网公众帐号
友情链接
消息推送
道招网关注互联网,分享IT资讯,前沿科技、编程技术,是否允许文章更新后推送通知消息。
允许
不用了