免责声明
- 仅技术学习研究未对外发布过任何相关工具
- 发布本文时此方法已经基本失效
前言
钉钉的消息,只要打开就会自动变为已读,我的一个朋友说这让他很烦恼,问我能不能干掉这个功能,改为手动确定消息为已读。
思路
这个功能肯定是用户点开了消息再调用服务端接口告知此消息为已读的,那么就有两个思路:
方案 1:通过修改客户端,避免触发已读操作。
方案 2:通过拦截网络请求,阻止已读接口的调用。
考虑到钉钉的客户端是使用 ElectronJS 技术进行开发,加上朋友希望界面上能有按钮让他手动确认消息为已读。所以优先选择方案 1。
在钉钉的安装目录下可以找到 webcontent 文件夹,里面存储了聊天界面的相关 html、css 和 js 代码。
通过分析后,需要调整的代码在 webcontent/assets/chatbox-index.js 文件中。
需要注意的是代码都是压缩过的并且文件超大,需要进行格式化再通过一些可能的关键词去查找相关代码,比如 updateToRead。
功能实现效果
经过 7749 次修改,最终实现以下效果:
- 查看消息不会调用已读接口,对方看到的消息状态依然是未读。
- 右键菜单中新增了标记已读功能,用户可以手动标记单条消息为已读。
- 未读消息背景为淡蓝色,已读消息则为原始效果。
- 消息框顶部增加 当前窗口可视区域内有多少条未读消息,点击后可批量把这些消息更新为已读状态;

