脚本体验师001 发表于 2022-8-14 13:13:14

大佬不分享,整个世界黯淡无光
学习学习

steven026 发表于 2022-8-14 21:47:22

cxxjackie 发表于 2022-8-13 22:39
我测试了一下,好像浏览器有对这个问题进行优化,循环引用的资源是能被正确释放的(主要是IE里有问题), ...

感谢哥哥的建议
更新了一版
我尝试了下最后还是选择用Object.defineProperty监听app.isUnmounted,
当isUnmounted变为true的时候把__vue__、WeakMap中与app相同的值直接删除,从而销毁对app的引用。
感觉这样写起来简单一点,劫持Vue的销毁方法有点难度
(但是代码写的好臃肿……)

cxxjackie 发表于 2022-8-14 23:34:05

steven026 发表于 2022-8-14 21:47
感谢哥哥的建议
更新了一版
我尝试了下最后还是选择用Object.defineProperty监听app.isUnmounted,


可以,现在看起来合理多了,代码应该是有优化空间的,比如把数组换成Set,这样删除更容易(也更快)。

小C 发表于 2022-9-22 15:07:49

大佬,仰望.jpg
666666

max3 发表于 2024-3-4 17:20:33

好用!之前 b 站一次更新后一些元素都不挂载 `__vue__` 了。一直在寻找绕过的办法,由于没对 vue 有什么研究未果,没想到还能这样!感谢!

nhieuvu 发表于 2024-12-4 03:18:39

我的偶像 tampermonkey 399.15519937667807

pawjazz 发表于 2025-5-30 14:55:08

感谢楼主的付出, 报告bug一例:
当元素下挂载超过2个app时, __vue__数组会出错,

排查了一下是recordDOM函数的问题,

value.push(app)返回的是数组长度, 删掉"el.__vue__ ="即可

steven026 发表于 2025-6-3 03:45:29

pawjazz 发表于 2025-5-30 14:55
感谢楼主的付出, 报告bug一例:
当元素下挂载超过2个app时, __vue__数组会出错,



很久没研究了 这代码太老了 当初写的时候一知半解
不过现在有更好的hook方式了
等脚本猫mv3实现IndexedDB之后可能会重构下

pawjazz 发表于 2025-6-5 20:36:50

steven026 发表于 2025-6-3 03:45
很久没研究了 这代码太老了 当初写的时候一知半解
不过现在有更好的hook方式了
等脚本猫mv3实现IndexedD ...

期待您的更新, 我这边有个React和Vue3的混合页面, 目前版本一劫持Proxy, React就报错, 数据出不来了
页: 1 [2]
查看完整版本: Hook Vue3 app v1.0.3 [Vue3 app劫持 油猴库]