szzxc 发表于 2024-2-22 08:59:35

cxxjackie 发表于 2024-2-21 23:14
是否跨域?没有的话将iframe.contentDocument作为parent参数传入。

iframe没有名称,怎么样才能传入,而且这个页面不是一开始就加载的,只有MOUSE点击某个功能会出现一个新的TAB页面,TAb页面里面有多个iframe, 且没有名称,但是通过document.queryselectorAll('iframe')能获取, 但是没有名称。

cxxjackie 发表于 2024-2-22 22:13:35

szzxc 发表于 2024-2-22 08:59
iframe没有名称,怎么样才能传入,而且这个页面不是一开始就加载的,只有MOUSE点击某个功能会出现一个新 ...

可以通过get方法来获取iframe元素,元素不一定要有名称来定位,建议学习一下其他选择器的写法:https://bbs.tampermonkey.net.cn/thread-1821-1-1.html
实在找不到适合定位的特征,也可以利用src不同来写选择器:

另外,如我前面126楼所说,获取到iframe元素不代表iframe已加载完毕,可能还需要监听load事件,match进iframe内部来执行脚本要简单得多。

pawjazz 发表于 2024-8-7 23:18:14

本帖最后由 pawjazz 于 2024-8-8 18:52 编辑

感谢!感谢!感谢!感谢!感谢!

gues1688 发表于 2024-9-5 23:27:14

本帖最后由 gues1688 于 2024-9-5 23:30 编辑

> 本帖最后由 gues1688 于 2024-9-5 23:28 编辑

老大,下面这面代码肯定不对,要怎么改写,选择器 'div' 显然不止返回一个元素:
```
(function() {
    elmGetter.get('div').then(divs => {
      console.log(divs);
    });
})();
```
谢谢老大!

gues1688 发表于 2024-9-6 15:12:39

gues1688 发表于 2024-9-5 23:27
> 本帖最后由 gues1688 于 2024-9-5 23:28 编辑

老大,下面这面代码肯定不对,要怎么改写,选择器 'd ...

反复调试观察,明白了,代码没错。
原以为,会等待所有选择器的元素都出现,才会返回,结果却是只要出现了1个就返回,不会继续监视其它元素。

想要监视 选择器筛选的所有元素,需要用的是 elmGetter.each()。

谢谢老大提供的精彩实用库!

cxxjackie 发表于 2024-9-6 22:31:11

gues1688 发表于 2024-9-6 15:12
反复调试观察,明白了,代码没错。
原以为,会等待所有选择器的元素都出现,才会返回,结果却是只要出现 ...

get对标的是querySelector,设计本意如此,each对标的才是querySelectorAll。

gues1688 发表于 2024-9-6 23:04:21

cxxjackie 发表于 2024-9-6 22:31
get对标的是querySelector,设计本意如此,each对标的才是querySelectorAll。

您的解答,浅显易懂,我明白了。
谢谢您!

有脚的本子 发表于 2024-9-13 18:53:16

请问SSE要如何断开获取Dta

cxxjackie 发表于 2024-9-13 22:12:36

有脚的本子 发表于 2024-9-13 18:53
请问SSE要如何断开获取Dta

这个似乎与库的功能无关,观察页面输出是否存在节点插入,是的话可以用each方法获取,不是的话需要自己写MutationObserver观察文本变化(characterData),或者对相关接口做劫持(如EventSource的message事件)。

pawjazz 发表于 2024-11-27 13:55:00

一直再用大佬这个库, 基本上都跑得很6, 今天报告一个性能问题
最近遇到一个下拉菜单(框架是Vue) 有一千多项数据

点击输入框输入文字的时候大概要卡10来秒
排查了一下 是observe(target, {..., attributes: true}) 引起query方法被调用好几千次

如果设置 attributes: false 就不卡了

麻烦楼主看看能不能优化一下 感谢
页: 4 5 6 7 8 9 10 11 12 13 [14] 15
查看完整版本: 异步获取元素的脚本库 ElementGetter