脚本体验师001 发表于 2023-6-5 00:05:51

cxxjackie 发表于 2023-6-4 22:43
我没这个云盘账号来测试,但大致能推测出原因:第一种情况是因为页面中本身就有div,elmGetter.get几乎是 ...

谢谢老师解答

第二种 改成 script.onload = e => e.isTrusted && resolve(e); 等不到返回值了

这个页面 Vue.version = '2.7.10'

目前我猜还是和 MutationObserver 有关系,因为页面启动后30秒直接loadScript是成功的

王一之 发表于 2023-6-5 10:25:00

脚本体验师001 发表于 2023-6-4 19:44


排查到了,是GM_log(div);因为GM_log只能打印基础类型,div就出问题报错了

脚本体验师001 发表于 2023-6-5 11:34:14

王一之 发表于 2023-6-5 10:25
排查到了,是GM_log(div);因为GM_log只能打印基础类型,div就出问题报错了

哦哈,看我一下就发现两个问题,但这都是小问题避开即可
MutationObserver 到底和页面啥啥有私仇还是旧恨具体原因找起来怕是很难,暂且搁置
谢谢老师们

脚本体验师001 发表于 2023-6-5 19:59:32

本帖最后由 脚本体验师001 于 2023-6-5 20:00 编辑

cxxjackie 发表于 2023-6-4 22:43
我没这个云盘账号来测试,但大致能推测出原因:第一种情况是因为页面中本身就有div,elmGetter.get几乎是 ...
这简直罪过,怎么可以对 MutationObserver 产生哪怕一丝丝的怀疑,简直就是对神灵的亵渎

MutationObserver 牌子硬,站的稳,又帅,免检值得信赖

我发现使用Object.defineProperty对vue数据进行监听,同样会出现这个问题

cxxjackie 发表于 2023-6-5 22:19:55

脚本体验师001 发表于 2023-6-5 00:05
谢谢老师解答

第二种 改成 script.onload = e => e.isTrusted && resolve(e); 等不到返回值了


调试了一下,简单来说就是,页面在某一时刻将appendChild劫持了,并在处理结束后将其还原:
!(data/attachment/forum/202306/05/221803ut7l16wt1mt2hga7.png)
当检测到插入的标签是link、style或script时触发一个伪造的load事件,阻止其创建并在`#__qiankun_microapp_wrapper_for_micro_home_main__`这个元素下生成了一条记录。
解决方法可以改用append来插入,或者调用appendChild的原始引用:
```js
Node.prototype.appendChild.call(document.head, script);
```

脚本体验师001 发表于 2023-6-5 22:54:19

cxxjackie 发表于 2023-6-5 22:19
调试了一下,简单来说就是,页面在某一时刻将appendChild劫持了,并在处理结束后将其还原:
!

就这么轻而易举的就找到原因了!
俺真是五体投地全身心的佩服
用我夸人的最华丽的辞藻来说,老师好棒棒!!!!!!

mihaty 发表于 2023-9-9 14:01:14

@李恒道 @cxxjackie 两位大佬,请问外部库可以改成本地路径吗?例如 // @require C:/JScript/ElementGetter.js 万分感谢

cxxjackie 发表于 2023-9-9 22:57:44

mihaty 发表于 2023-9-9 14:01
@李恒道 @cxxjackie 两位大佬,请问外部库可以改成本地路径吗?例如 // @require C:/JScript/ElementGetter ...

可以,这样写就行:
// @require file:///C:/JScript/ElementGetter.js
油猴需要改一下设置:安全 -> 允许脚本访问本地文件(所有或者外部)
浏览器可能还需要额外设置一下,允许插件访问文件网址,这个不同浏览器的设置方式不同,一般是默认开启的。

李恒道 发表于 2023-9-10 02:03:21

mihaty 发表于 2023-9-9 14:01
@李恒道 @cxxjackie 两位大佬,请问外部库可以改成本地路径吗?例如 // @require C:/JScript/ElementGetter ...

https://bbs.tampermonkey.net.cn/forum.php?mod=viewthread&tid=1550

szzxc 发表于 2023-11-1 18:12:58

const elmGetter = new ElementGetter();    一加载这个语句,网页有些内容就不正常了。有什么办法解决么?
页: 1 2 3 4 5 6 7 8 9 10 [11] 12 13 14 15
查看完整版本: 异步获取元素的脚本库 ElementGetter