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

钉钉是浏览器套壳吗

  •  
  •   Chinsung · 9 天前 · 6363 次点击

    事情起因

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

    发现

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


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

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

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

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

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