如何使用 js 完成“防撤回功能”?

2021-04-01 17:11:18 +08:00
 woyao396

公司自己的 IM 是基于Electron构建的 可以调出控制台插入任意的 js 代码。

有个想法就是能不能实现从 dom 或其他层面实现防撤回,自己有个想法是:

监听 dom 移除的事件,然后如果是消息撤回相关的 dom 移除,就阻止移除或重新插入

不知道这个方案现不现实 能不能实现?

2955 次点击
所在节点    JavaScript
14 条回复
cydysm
2021-04-01 17:18:53 +08:00
不能禁用 devtools 吗
seki
2021-04-01 17:19:00 +08:00
按照我的理解,IM 的信息不是发送到服务端里面储存,客户端只负责展示吗,用户删除 dom 的意义是什么

然后其实是有办法禁止开发者工具和调试参数的,但这个不治本,因为用户最终还是可以打开 asar 做他想做的事情
woyao396
2021-04-01 17:23:55 +08:00
@cydysm
@seki
我指的是用户怎么用 js 去实现防撤回的逻辑、不是 IM 的开发组禁止 devtools 之类的
Jirajine
2021-04-01 17:30:55 +08:00
MutationObserver

或者你直接 setInterval 轮询,不断读取 dom 列表,发现比之前少了就加回去。
xcstream
2021-04-01 17:50:19 +08:00
理论上可以
Kasumi20
2021-04-01 19:16:08 +08:00
您这套系统有点牛啊
zhuweiyou
2021-04-01 19:19:04 +08:00
hook websocket 的 on message
ch2
2021-04-01 19:19:52 +08:00
开 debuger,你自己撤回一次,然后断点 trace 到功能函数,然后把那个函数给 hook 掉使它无效
superrichman
2021-04-01 19:23:27 +08:00
直接把撤回消息的函数干掉就完事了
BeautifulSoap
2021-04-01 19:27:16 +08:00
防撤回应该没问题,但还不够。你还得把撤回的信息保存在本地动态插入加载。否则的话重启下软件拦截下的消息就没了
cereschen
2021-04-01 19:31:14 +08:00
找到你想监听的 dom 然后重写 removeChild 就可以避免被删除元素了
meepo3927
2021-04-02 09:11:52 +08:00
没太明白, 撤回功能是哪来的? 开发的吗?
crclz
2021-04-02 09:49:09 +08:00
将所有消息再存一份即可
Roger006
2021-04-02 09:56:08 +08:00
重写 [删除消息的函数] ,让它能执行,但不起作用

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/767270

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX