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

发现在 web 上如此,为什么 windows 不会呢?试了所有 QQ,微信,TG 等等常用客户端软件,都是打了字,输入框里并不会出现字,而是选择了之后直接出现在输入框里。
只有伟大的钉钉,表现和浏览器一模一样。
试了一些小众或者个人开发的客户端软件,也是和 QQ 这些一样,说明在 windows 客户端上,这应该是个很轻松 easy 的功能,所以猜测钉钉其实是个浏览器套壳。

我的 web 不会有这种问题

不一定什么载体都有可能出这个问题,单纯是个逻辑性 bug,限制长度的方法不止一个,你说的这种最省事也最容易触发这个 bug

Mac 的客户端都是啊。。。

你猜的对,钉钉至少有一段时期是通过这种技术栈实现的。更别说现在大量功能一看就是网页了。

那按照你的逻辑王者荣耀也是浏览器套壳咯

是浏览器

2021-10-13 14-55-24 的屏幕截图.png

刚刚的截图,不知道为什么要用这玩意办公。

局部使用也是常见做法

可能是用的类似 electron 这种技术吧

cef

好像是一个类似 electron 的库,所以各种卡顿各种 bug 。

这么多人不知道 cef 吗

出了 Linux 版,不必 wine 了。

钉钉桌面客户端很难用,体验很差,
只有手机端 app 可以用。

收回上面这句话,
应该是不知道为什么 windows 版钉钉很难用,老是页面卡着不动,
linux 版钉钉还行

不是。
有个开源版的是基于 electron 的。钉钉目前自家的应该应该也不是。
(我说的是 LINUX 版的)

钉钉没研究过,但微信就是跑 nodejs,开发者工具和企业微信一样。
我觉得没必要在乎它用什么写...
而你们前端提到的我觉得和是否 web 形式毫无关联...
在 web 中本来就没有限制字数的功能( textarea ),
都是靠 JS 来实现的,
JS 绑定的触发不同,实现出来的逻辑表现就不同;
比方我绑定 onChange/input 时,输入的时候就会出现你提到的问题。
但是如果我绑定的是 blur,那就不会出现这个问题。

官网无,在哪里下载啊?

win 版钉钉经常性内存占用过高,我觉得有内存泄露方面的 bug

只能说是嵌了一个浏览器,部分功能是用 web 实现的

electron

dtapp-pub.dingtalk.com/dingtalk-desktop/xc_dingtalk_update/linux_deb/Release/com.alibabainc.dingtalk_1.0.0.294_amd64.deb

基于 electron

这个推理不对,照这么说 word 也是 web 套壳了……

浏览器这样表现 不代表 这样表现的都是浏览器

小程序显然是在容器里边,app 本身是原生的

虽然你的结论我支持,但是推理逻辑不是很支持。。。

钉钉就是套的 CHROME 。我观察过进程。PC 端占用内存巨大,甚至能到 2 ~ 3 个 G 的内存。

看相关文件可以很容易得知,钉钉既用了 duilib 也用了 cef 。

对,我也发现这个问题。PC 端一开,电脑内存消耗好几个 G

在安装目录翻一翻不就知道是啥了嘛

不知道有没有钉钉开发人员看到这个帖子。windows 端占有内存巨大,影响客户机性能的问题啥时候解决下?

不会吧?不会吧?还有人不是 32G 内存?

PC 微信打字也是先出拼英再出文字的

主体是 nw.js

哈哈哈,ZF 采购的电脑,限价导致低配。客户天天吐槽。

手动 re 25 26 27.
某些部件有调用 HTML5 页面,特别是同特定组织相关的。

混合架构,有 H5 也有 Native 和小程序

钉钉早期是用 NW.JS 现在不知道

我的输入法是可以自己选择的,选项叫 inline_preedit,可以选输入框里不显示,或者显示拼音或别的输入码,或者显示转换好的字(第一个候选项)

github.com/duilib/duilib
钉钉用的是这个吧

阿里系的 app 没几个能打的,除了淘宝。

原来魔兽世界是浏览器套壳
厉害了呀,什么时候 Google 和 Mozilla 能有暴雪一半的技术力优化一下浏览器运行效率就好了(笑

钉钉没用过,所以不讨论你主题。

但是起因我知道,浏览器里设置 input 长度,默认的 onChange 打拼音的时候也会触发。这种应该用 CompositionEvent 这个事件 developer.mozilla.org/zh-CN/docs/Web/API/CompositionEvent, 就能达到你说的 windows 的效果

nwjs.io/ 用的这个吧

别的界面不清楚,钉钉群直播的那个界面是 WEB 。为什么?我中间人插入过 JS,并执行了。

钉钉用的 cef,至于输入法这个,要看窗口具体实现,可以显示输入过程也可以只显示结果

偶然发现,windows 上用 ProcessExplorer (docs.microsoft.com/en-us/sysinternals/downloads/process-explorer) 发现钉钉相比于其它日常应用属于独树一枝,不知道具体原因是什么,具体表现就是:
不管是 idea64/wechat.exe/msedge.exe/xmind.exe/甚至包含 onedrive/everything 都是挂在 explorer.exe 进程下的,唯独钉钉不是。

图例: ProcessExplorer

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```