钉钉是浏览器套壳吗

2021-10-13 14:24:55 +08:00
 Chinsung

事情起因

群里前端说有个问题,就是输入框在输入中文时,如果做了长度限制,那么此时输入中文拼音,正常情况下会导致拼音无法正常输入,因为 web 上的文本框里,输入法打的字都会先以拼音形式出现在文本框里,再按空格之后再转换为汉字替换现在文本框中。

发现

发现在 web 上如此,为什么 windows 不会呢?试了所有 QQ,微信,TG 等等常用客户端软件,都是打了字,输入框里并不会出现字,而是选择了之后直接出现在输入框里。
只有伟大的钉钉,表现和浏览器一模一样。
试了一些小众或者个人开发的客户端软件,也是和 QQ 这些一样,说明在 windows 客户端上,这应该是个很轻松 easy 的功能,所以猜测钉钉其实是个浏览器套壳。
9699 次点击
所在节点    程序员
55 条回复
FrankFang128
2021-10-13 22:18:00 +08:00
https://github.com/duilib/duilib
钉钉用的是这个吧
swordspoet
2021-10-14 09:03:01 +08:00
阿里系的 app 没几个能打的,除了淘宝。
2i2Re2PLMaDnghL
2021-10-14 10:25:37 +08:00
原来魔兽世界是浏览器套壳
厉害了呀,什么时候 Google 和 Mozilla 能有暴雪一半的技术力优化一下浏览器运行效率就好了(笑
Torpedo
2021-10-14 10:27:43 +08:00
钉钉没用过,所以不讨论你主题。

但是起因我知道,浏览器里设置 input 长度,默认的 onChange 打拼音的时候也会触发。这种应该用 CompositionEvent 这个事件 https://developer.mozilla.org/zh-CN/docs/Web/API/CompositionEvent, 就能达到你说的 windows 的效果
shadowyue
2021-10-14 10:33:28 +08:00
https://nwjs.io/ 用的这个吧
hi543
2021-10-14 11:45:57 +08:00
别的界面不清楚,钉钉群直播的那个界面是 WEB 。为什么?我中间人插入过 JS,并执行了。
newmlp
2021-10-14 12:36:40 +08:00
钉钉用的 cef,至于输入法这个,要看窗口具体实现,可以显示输入过程也可以只显示结果
hisune
2021-10-14 16:20:53 +08:00
szq8014
2021-10-14 16:58:06 +08:00
偶然发现,windows 上用 ProcessExplorer ( https://docs.microsoft.com/en-us/sysinternals/downloads/process-explorer) 发现钉钉相比于其它日常应用属于独树一枝,不知道具体原因是什么,具体表现就是:
不管是 idea64/wechat.exe/msedge.exe/xmind.exe/甚至包含 onedrive/everything 都是挂在 explorer.exe 进程下的,唯独钉钉不是。


图例: ![ProcessExplorer]( )
xiao201261
2021-10-14 21:28:35 +08:00
```Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Host: hidden
Referer: hidden
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36 dingtalk-win/1.0.0 nw(0.14.7) DingTalk(6.0.30-Release.9178701) Mojo/1.0.0 Native AppType(release) Channel/201200
SEC-FETCH-DEST: document
SEC-FETCH-MODE: navigate
SEC-FETCH-SITE: same-origin
SEC-FETCH-USER: ?1
UPGRADE-INSECURE-REQUESTS: 1```
NormanGhost
2021-10-14 22:40:38 +08:00
基本上就是 electron.js ,我就是前端,也给公司的桌面端软件开发,用的也是 electron.js 。这东西就是占内存,没办法一个 Chromium 一个 Node.js 可想而知。最近,有个 rust 写的跨平台框架 tauri 看起来感觉不错,解决了内存占用和软件包太大的问题。有时间研究一下
Chinsung
2021-10-19 09:32:39 +08:00
@oott123 好像与输入法有关。
不过钉钉用搜狗也是会出现字
Chinsung
2021-10-19 09:33:51 +08:00
@2i2Re2PLMaDnghL #43 是标题里的那个吗不够显眼?
2i2Re2PLMaDnghL
2021-10-19 09:58:15 +08:00
@Chinsung 为了帮助没玩过魔兽世界的同学理解,魔兽世界也是『输入法打的字都会先以拼音形式出现在文本框里』。或者说暴雪的游戏全部都是这样的。这不构成判据。

这个东西分为两个方面:1. 输入法将输入法状态传递给 ime/tsf 框架; 2. 应用程序根据 ime/tsf 框架显示半输入状态。而各种游戏大多都能更进一步,阻止 ime 自行获取输入而由游戏程序喂给 ime,避免控制失效问题;同时阻止 ime 自己的任何显示,避免层叠渲染问题。
2i2Re2PLMaDnghL
2021-10-19 10:06:24 +08:00
另外,在应用程序中采用 Web 技术实现部分界面也不能说套壳。
比如战网启动器,可以从文件名猜出 Qt + QtWebEngine + Vue
但不用 C++ 直接操作二进制可难写出暴雪那下载逻辑和存储结构

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/807546

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX