群里前端说有个问题,就是输入框在输入中文时,如果做了长度限制,那么此时输入中文拼音,正常情况下会导致拼音无法正常输入,因为 web 上的文本框里,输入法打的字都会先以拼音形式出现在文本框里,再按空格之后再转换为汉字替换现在文本框中。
发现在 web 上如此,为什么 windows 不会呢?试了所有 QQ,微信,TG 等等常用客户端软件,都是打了字,输入框里并不会出现字,而是选择了之后直接出现在输入框里。
只有伟大的钉钉,表现和浏览器一模一样。
试了一些小众或者个人开发的客户端软件,也是和 QQ 这些一样,说明在 windows 客户端上,这应该是个很轻松 easy 的功能,所以猜测钉钉其实是个浏览器套壳。
1
xieqiqiang00 2021-10-13 14:31:16 +08:00
我的 web 不会有这种问题
|
2
TomatoYuyuko 2021-10-13 14:34:26 +08:00
不一定什么载体都有可能出这个问题,单纯是个逻辑性 bug,限制长度的方法不止一个,你说的这种最省事也最容易触发这个 bug
|
3
yiqiao 2021-10-13 14:34:45 +08:00
Mac 的客户端都是啊。。。
|
4
Vegetable 2021-10-13 14:40:40 +08:00
你猜的对,钉钉至少有一段时期是通过这种技术栈实现的。更别说现在大量功能一看就是网页了。
|
5
christin 2021-10-13 14:43:11 +08:00 via iPhone
那按照你的逻辑王者荣耀也是浏览器套壳咯
|
6
wanguorui123 2021-10-13 14:51:06 +08:00
是浏览器
|
7
NEVERCODE 2021-10-13 14:56:46 +08:00
![2021-10-13 14-55-24 的屏幕截图.png]( http://tva1.sinaimg.cn/large/007Hwfdzly1gvdovy4t7hj61hc0u0npd02.jpg)
|
8
NEVERCODE 2021-10-13 14:57:16 +08:00
刚刚的截图,不知道为什么要用这玩意办公。
|
9
zxcslove 2021-10-13 15:20:23 +08:00
局部使用也是常见做法
|
10
horou 2021-10-13 15:25:28 +08:00
可能是用的类似 electron 这种技术吧
|
11
mXw 2021-10-13 15:28:05 +08:00
cef
|
12
Oktfolio 2021-10-13 15:33:57 +08:00
好像是一个类似 electron 的库,所以各种卡顿各种 bug 。
|
13
darknoll 2021-10-13 15:34:35 +08:00
这么多人不知道 cef 吗
|
15
zjsxwc 2021-10-13 16:37:50 +08:00
钉钉桌面客户端很难用,体验很差,
只有手机端 app 可以用。 |
17
skiy 2021-10-13 16:57:59 +08:00
不是。
有个开源版的是基于 electron 的。钉钉目前自家的应该应该也不是。 (我说的是 LINUX 版的) |
18
markgor 2021-10-13 17:09:31 +08:00 1
钉钉没研究过,但微信就是跑 nodejs,开发者工具和企业微信一样。
我觉得没必要在乎它用什么写... 而你们前端提到的我觉得和是否 web 形式毫无关联... 在 web 中本来就没有限制字数的功能( textarea ), 都是靠 JS 来实现的, JS 绑定的触发不同,实现出来的逻辑表现就不同; 比方我绑定 onChange/input 时,输入的时候就会出现你提到的问题。 但是如果我绑定的是 blur,那就不会出现这个问题。 |
20
madlifer 2021-10-13 18:26:25 +08:00
win 版钉钉经常性内存占用过高,我觉得有内存泄露方面的 bug
|
21
musi 2021-10-13 18:32:01 +08:00
只能说是嵌了一个浏览器,部分功能是用 web 实现的
|
22
littlewing 2021-10-13 18:33:37 +08:00
electron
|
23
zjsxwc 2021-10-13 18:36:19 +08:00 via Android
|
24
yanue 2021-10-13 18:41:13 +08:00
基于 electron
|
25
oott123 2021-10-13 18:47:13 +08:00
|
26
inhzus 2021-10-13 18:49:38 +08:00 via iPhone
小程序显然是在容器里边,app 本身是原生的
|
27
skye 2021-10-13 19:55:29 +08:00
虽然你的结论我支持,但是推理逻辑不是很支持。。。
|
28
jousca 2021-10-13 20:10:50 +08:00
钉钉就是套的 CHROME 。我观察过进程。PC 端占用内存巨大,甚至能到 2 ~ 3 个 G 的内存。
|
29
ysc3839 2021-10-13 20:11:06 +08:00 via Android
看相关文件可以很容易得知,钉钉既用了 duilib 也用了 cef 。
|
31
wzzzx 2021-10-13 20:12:02 +08:00
在安装目录翻一翻不就知道是啥了嘛
|
32
jousca 2021-10-13 20:13:14 +08:00
不知道有没有钉钉开发人员看到这个帖子。windows 端占有内存巨大,影响客户机性能的问题啥时候解决下?
|
33
PrinceofInj 2021-10-13 20:21:34 +08:00
@jousca 不会吧?不会吧?还有人不是 32G 内存?
|
34
yangheng4922 2021-10-13 20:26:21 +08:00
PC 微信打字也是先出拼英再出文字的
|
35
TonyG 2021-10-13 20:48:44 +08:00
主体是 nw.js
|
36
jousca 2021-10-13 20:56:50 +08:00
@PrinceofInj 哈哈哈,ZF 采购的电脑,限价导致低配。客户天天吐槽。
|
37
deetz 2021-10-13 21:24:57 +08:00
手动 re 25 26 27.
某些部件有调用 HTML5 页面,特别是同特定组织相关的。 |
38
ychost 2021-10-13 21:53:31 +08:00
混合架构,有 H5 也有 Native 和小程序
|
39
iMusic 2021-10-13 22:00:22 +08:00
钉钉早期是用 NW.JS 现在不知道
|
40
sugarsalt 2021-10-13 22:16:15 +08:00
我的输入法是可以自己选择的,选项叫 inline_preedit,可以选输入框里不显示,或者显示拼音或别的输入码,或者显示转换好的字(第一个候选项)
|
41
FrankFang128 2021-10-13 22:18:00 +08:00
https://github.com/duilib/duilib
钉钉用的是这个吧 |
42
swordspoet 2021-10-14 09:03:01 +08:00
阿里系的 app 没几个能打的,除了淘宝。
|
43
2i2Re2PLMaDnghL 2021-10-14 10:25:37 +08:00
原来魔兽世界是浏览器套壳
厉害了呀,什么时候 Google 和 Mozilla 能有暴雪一半的技术力优化一下浏览器运行效率就好了(笑 |
44
Torpedo 2021-10-14 10:27:43 +08:00
钉钉没用过,所以不讨论你主题。
但是起因我知道,浏览器里设置 input 长度,默认的 onChange 打拼音的时候也会触发。这种应该用 CompositionEvent 这个事件 https://developer.mozilla.org/zh-CN/docs/Web/API/CompositionEvent, 就能达到你说的 windows 的效果 |
45
shadowyue 2021-10-14 10:33:28 +08:00
https://nwjs.io/ 用的这个吧
|
46
hi543 2021-10-14 11:45:57 +08:00
别的界面不清楚,钉钉群直播的那个界面是 WEB 。为什么?我中间人插入过 JS,并执行了。
|
47
newmlp 2021-10-14 12:36:40 +08:00
钉钉用的 cef,至于输入法这个,要看窗口具体实现,可以显示输入过程也可以只显示结果
|
48
hisune 2021-10-14 16:20:53 +08:00
|
49
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]( ) |
50
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``` |
51
NormanGhost 2021-10-14 22:40:38 +08:00
基本上就是 electron.js ,我就是前端,也给公司的桌面端软件开发,用的也是 electron.js 。这东西就是占内存,没办法一个 Chromium 一个 Node.js 可想而知。最近,有个 rust 写的跨平台框架 tauri 看起来感觉不错,解决了内存占用和软件包太大的问题。有时间研究一下
|
53
Chinsung OP @2i2Re2PLMaDnghL #43 是标题里的那个吗不够显眼?
|
54
2i2Re2PLMaDnghL 2021-10-19 09:58:15 +08:00
@Chinsung 为了帮助没玩过魔兽世界的同学理解,魔兽世界也是『输入法打的字都会先以拼音形式出现在文本框里』。或者说暴雪的游戏全部都是这样的。这不构成判据。
这个东西分为两个方面:1. 输入法将输入法状态传递给 ime/tsf 框架; 2. 应用程序根据 ime/tsf 框架显示半输入状态。而各种游戏大多都能更进一步,阻止 ime 自行获取输入而由游戏程序喂给 ime,避免控制失效问题;同时阻止 ime 自己的任何显示,避免层叠渲染问题。 |
55
2i2Re2PLMaDnghL 2021-10-19 10:06:24 +08:00
另外,在应用程序中采用 Web 技术实现部分界面也不能说套壳。
比如战网启动器,可以从文件名猜出 Qt + QtWebEngine + Vue 但不用 C++ 直接操作二进制可难写出暴雪那下载逻辑和存储结构 |