李恒道 发表于 2022-9-4 11:41
大佬的库也能解决这个问题吗...
我没看到用webworker呀知识盲区了
(我好像懂了,MutationObserve ...
MutationObserve是个啥,得去学习下新姿势了
steven026 发表于 2022-9-4 12:04
我觉得这单纯的只是setTimeout的问题
MutationObserver或者setInterval应该都能解决
页面越多运行速度越 ...
setInterval 去判断啥呢?判断页面是否加载成功还是?
bigrain 发表于 2022-9-4 20:08
setInterval 去判断啥呢?判断页面是否加载成功还是?
判断元素是否加载
(function () {
'use strict';
if (location.href.indexOf('autorestart') > 0) {
let timer = setInterval(() => {
let button = $("button.ant-btn-primary")
console.info(button);
if (button.length > 0) {
clearInterval(timer)
button.click();
}
}, 1000);
}
})();
bigrain 发表于 2022-9-4 20:08
MutationObserve是个啥,得去学习下新姿势了
https://bbs.tampermonkey.net.cn/thread-184-1-1.html
这里有对应的教程
if(location.href.indexOf('autorestart') == 0 )
return;
//console.info('表示我来过了,那就说明是加载的问题了');
const elmGetter = new ElementGetter();
elmGetter.each('.ant-btn-primary', document, button => {
//console.info(button);
const span = button.querySelector('span');
//console.info(span);
if (span) {
setTimeout(()=>{
(function() {
span.click();
})();
}, 1000);
}
});
改成这样了,暂时看起来是可以了,等会再测试一下
本帖最后由 cxxjackie 于 2022-9-4 23:34 编辑
bigrain 发表于 2022-9-4 20:25
改成这样了,暂时看起来是可以了,等会再测试一下
可以这样,不用再加setTimeout:
elmGetter.each('.ant-btn-primary span', document, span => {
span.click();
});
以前用过 waitforelement.js 意思是差不多的不,只是更强一些
bigrain 发表于 2022-9-4 22:34
以前用过 waitforelement.js 意思是差不多的不,只是更强一些
是的,参考这篇的讨论:https://bbs.tampermonkey.net.cn/thread-2729-1-1.html
cxxjackie 发表于 2022-9-4 20:37
可以这样,不用再加setTimeout:
精炼多了,明天试试
waitforelement有个缺憾,页面上有2个按钮,a按钮弹出div层,里面有个b按钮,class一样,发现b按钮不会点击。
但是用 elmGetter 发现是可以的,