V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Chinsung
V2EX  ›  程序员

钉钉是浏览器套壳吗

  •  
  •   Chinsung · 14 天前 · 6419 次点击

    事情起因

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

    发现

    发现在 web 上如此,为什么 windows 不会呢?试了所有 QQ,微信,TG 等等常用客户端软件,都是打了字,输入框里并不会出现字,而是选择了之后直接出现在输入框里。
    只有伟大的钉钉,表现和浏览器一模一样。
    试了一些小众或者个人开发的客户端软件,也是和 QQ 这些一样,说明在 windows 客户端上,这应该是个很轻松 easy 的功能,所以猜测钉钉其实是个浏览器套壳。
    
    55 条回复    2021-10-19 10:06:24 +08:00
    xieqiqiang00
        1
    xieqiqiang00   14 天前
    我的 web 不会有这种问题
    TomatoYuyuko
        2
    TomatoYuyuko   14 天前
    不一定什么载体都有可能出这个问题,单纯是个逻辑性 bug,限制长度的方法不止一个,你说的这种最省事也最容易触发这个 bug
    yiqiao
        3
    yiqiao   14 天前
    Mac 的客户端都是啊。。。
    Vegetable
        4
    Vegetable   14 天前
    你猜的对,钉钉至少有一段时期是通过这种技术栈实现的。更别说现在大量功能一看就是网页了。
    christin
        5
    christin   14 天前 via iPhone
    那按照你的逻辑王者荣耀也是浏览器套壳咯
    wanguorui123
        6
    wanguorui123   14 天前
    是浏览器
    NEVERCODE
        7
    NEVERCODE   14 天前
    ![2021-10-13 14-55-24 的屏幕截图.png]( http://tva1.sinaimg.cn/large/007Hwfdzly1gvdovy4t7hj61hc0u0npd02.jpg)
    NEVERCODE
        8
    NEVERCODE   14 天前
    刚刚的截图,不知道为什么要用这玩意办公。
    zxcslove
        9
    zxcslove   14 天前
    局部使用也是常见做法
    horou
        10
    horou   14 天前
    可能是用的类似 electron 这种技术吧
    mXw
        11
    mXw   14 天前
    cef
    Oktfolio
        12
    Oktfolio   14 天前
    好像是一个类似 electron 的库,所以各种卡顿各种 bug 。
    darknoll
        13
    darknoll   14 天前
    这么多人不知道 cef 吗
    Loku
        14
    Loku   14 天前
    @NEVERCODE 出了 Linux 版,不必 wine 了。
    zjsxwc
        15
    zjsxwc   14 天前
    钉钉桌面客户端很难用,体验很差,
    只有手机端 app 可以用。
    zjsxwc
        16
    zjsxwc   14 天前
    @zjsxwc 收回上面这句话,
    应该是不知道为什么 windows 版钉钉很难用,老是页面卡着不动,
    linux 版钉钉还行
    skiy
        17
    skiy   14 天前
    不是。
    有个开源版的是基于 electron 的。钉钉目前自家的应该应该也不是。
    (我说的是 LINUX 版的)
    markgor
        18
    markgor   14 天前   ❤️ 1
    钉钉没研究过,但微信就是跑 nodejs,开发者工具和企业微信一样。
    我觉得没必要在乎它用什么写...
    而你们前端提到的我觉得和是否 web 形式毫无关联...
    在 web 中本来就没有限制字数的功能( textarea ),
    都是靠 JS 来实现的,
    JS 绑定的触发不同,实现出来的逻辑表现就不同;
    比方我绑定 onChange/input 时,输入的时候就会出现你提到的问题。
    但是如果我绑定的是 blur,那就不会出现这个问题。
    NEVERCODE
        19
    NEVERCODE   14 天前
    @Loku 官网无,在哪里下载啊?
    madlifer
        20
    madlifer   14 天前
    win 版钉钉经常性内存占用过高,我觉得有内存泄露方面的 bug
    musi
        21
    musi   14 天前
    只能说是嵌了一个浏览器,部分功能是用 web 实现的
    littlewing
        22
    littlewing   14 天前
    electron
    yanue
        24
    yanue   14 天前
    基于 electron
    oott123
        25
    oott123   14 天前


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

    浏览器这样表现 不代表 这样表现的都是浏览器
    inhzus
        26
    inhzus   14 天前 via iPhone
    小程序显然是在容器里边,app 本身是原生的
    skye
        27
    skye   14 天前
    虽然你的结论我支持,但是推理逻辑不是很支持。。。
    jousca
        28
    jousca   14 天前
    钉钉就是套的 CHROME 。我观察过进程。PC 端占用内存巨大,甚至能到 2 ~ 3 个 G 的内存。
    ysc3839
        29
    ysc3839   14 天前 via Android
    看相关文件可以很容易得知,钉钉既用了 duilib 也用了 cef 。
    jousca
        30
    jousca   14 天前
    @madlifer 对,我也发现这个问题。PC 端一开,电脑内存消耗好几个 G
    wzzzx
        31
    wzzzx   14 天前
    在安装目录翻一翻不就知道是啥了嘛
    jousca
        32
    jousca   14 天前
    不知道有没有钉钉开发人员看到这个帖子。windows 端占有内存巨大,影响客户机性能的问题啥时候解决下?
    PrinceofInj
        33
    PrinceofInj   14 天前
    @jousca 不会吧?不会吧?还有人不是 32G 内存?
    yangheng4922
        34
    yangheng4922   14 天前
    PC 微信打字也是先出拼英再出文字的
    TonyG
        35
    TonyG   14 天前
    主体是 nw.js
    jousca
        36
    jousca   14 天前
    @PrinceofInj 哈哈哈,ZF 采购的电脑,限价导致低配。客户天天吐槽。
    deetz
        37
    deetz   14 天前
    手动 re 25 26 27.

    某些部件有调用 HTML5 页面,特别是同特定组织相关的。
    ychost
        38
    ychost   14 天前
    混合架构,有 H5 也有 Native 和小程序
    iMusic
        39
    iMusic   14 天前
    钉钉早期是用 NW.JS 现在不知道
    sugarsalt
        40
    sugarsalt   14 天前
    我的输入法是可以自己选择的,选项叫 inline_preedit,可以选输入框里不显示,或者显示拼音或别的输入码,或者显示转换好的字(第一个候选项)
    FrankFang128
        41
    FrankFang128   14 天前
    https://github.com/duilib/duilib
    钉钉用的是这个吧
    swordspoet
        42
    swordspoet   13 天前
    阿里系的 app 没几个能打的,除了淘宝。
    2i2Re2PLMaDnghL
        43
    2i2Re2PLMaDnghL   13 天前
    原来魔兽世界是浏览器套壳
    厉害了呀,什么时候 Google 和 Mozilla 能有暴雪一半的技术力优化一下浏览器运行效率就好了(笑
    Torpedo
        44
    Torpedo   13 天前
    钉钉没用过,所以不讨论你主题。

    但是起因我知道,浏览器里设置 input 长度,默认的 onChange 打拼音的时候也会触发。这种应该用 CompositionEvent 这个事件 https://developer.mozilla.org/zh-CN/docs/Web/API/CompositionEvent, 就能达到你说的 windows 的效果
    shadowyue
        45
    shadowyue   13 天前
    https://nwjs.io/ 用的这个吧
    hi543
        46
    hi543   13 天前
    别的界面不清楚,钉钉群直播的那个界面是 WEB 。为什么?我中间人插入过 JS,并执行了。
    newmlp
        47
    newmlp   13 天前
    钉钉用的 cef,至于输入法这个,要看窗口具体实现,可以显示输入过程也可以只显示结果
    hisune
        48
    hisune   13 天前
    szq8014
        49
    szq8014   13 天前
    偶然发现,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
        50
    xiao201261   13 天前
    ```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
        51
    NormanGhost   13 天前
    基本上就是 electron.js ,我就是前端,也给公司的桌面端软件开发,用的也是 electron.js 。这东西就是占内存,没办法一个 Chromium 一个 Node.js 可想而知。最近,有个 rust 写的跨平台框架 tauri 看起来感觉不错,解决了内存占用和软件包太大的问题。有时间研究一下
    Chinsung
        52
    Chinsung   8 天前
    @oott123 好像与输入法有关。
    不过钉钉用搜狗也是会出现字
    Chinsung
        53
    Chinsung   8 天前
    @2i2Re2PLMaDnghL #43 是标题里的那个吗不够显眼?
    2i2Re2PLMaDnghL
        54
    2i2Re2PLMaDnghL   8 天前
    @Chinsung 为了帮助没玩过魔兽世界的同学理解,魔兽世界也是『输入法打的字都会先以拼音形式出现在文本框里』。或者说暴雪的游戏全部都是这样的。这不构成判据。

    这个东西分为两个方面:1. 输入法将输入法状态传递给 ime/tsf 框架; 2. 应用程序根据 ime/tsf 框架显示半输入状态。而各种游戏大多都能更进一步,阻止 ime 自行获取输入而由游戏程序喂给 ime,避免控制失效问题;同时阻止 ime 自己的任何显示,避免层叠渲染问题。
    2i2Re2PLMaDnghL
        55
    2i2Re2PLMaDnghL   8 天前
    另外,在应用程序中采用 Web 技术实现部分界面也不能说套壳。
    比如战网启动器,可以从文件名猜出 Qt + QtWebEngine + Vue
    但不用 C++ 直接操作二进制可难写出暴雪那下载逻辑和存储结构
    关于   ·   帮助文档   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2077 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 16:17 · PVG 00:17 · LAX 09:17 · JFK 12:17
    ♥ Do have faith in what you're doing.