bigrain 发表于 2022-9-4 09:13:42

2个脚本,A脚本打开页面B,页面B里面有定时代码,但是不y...

2个页面,2个脚本。
页面Pa(包含脚本Sa), 页面Pc(包含Sc)。

Sa里面有个批量执行的函数, 会通过 window.open 打开很多个 Pc页面。

Pc里面有个按钮,想通过Sc脚本去点击,但是很少时候会成功。

如果这个时候,我手工去激活那个页面,就是切换到Pc的页面,手工刷新一下页面,就可以执行。

尝试过用 setTimeout等待的方式,Sc的执行是 Document-end。然后setTimeout,5000,还是不行。

帮忙看看是哪里的问题

```
(function() {
'use strict';

if(location.href.indexOf('autorestart') > 0 ){
      setTimeout(()=>{
         var button = $("button.ant-btn-primary span");
          console.info(button);
         $(button).click();
      }, 5000);
}
})();
```

bigrain 发表于 2022-9-4 10:45:21

有人说,(function() {
var time = 10000,
      delta = 100,
      tid;

tid = setInterval(function() {
    if ( document.hidden ) { return; }   
    time -= delta;
    if ( time <= 0 ) {
      clearInterval(tid);
      myFunction(); // time passed - do your work
    }      
}, delta);
})();

这样可以,但是试下来好像不行

王一之 发表于 2022-9-4 10:53:41

console.info(button);

这个日志有打印出来么?

李恒道 发表于 2022-9-4 11:33:30

可能是标签页静默状态下启用了懒惰模式
试试这个问题
https://bbs.tampermonkey.net.cn/forum.php?mod=viewthread&tid=1987&highlight=%E5%90%8E%E5%8F%B0

cxxjackie 发表于 2022-9-4 11:33:35

估计是元素加载时机的问题,浏览器对非活动状态的标签页做了限制,可能是setTimeout/setInterval受到了影响,试试这个:https://bbs.tampermonkey.net.cn/thread-2726-1-1.html

李恒道 发表于 2022-9-4 11:41:54

cxxjackie 发表于 2022-9-4 11:33
估计是元素加载时机的问题,浏览器对非活动状态的标签页做了限制,可能是setTimeout/setInterval受到了影响 ...
大佬的库也能解决这个问题吗...
我没看到用webworker呀{:4_98:}知识盲区了
(我好像懂了,MutationObserve不受限制影响??

cxxjackie 发表于 2022-9-4 11:48:25

李恒道 发表于 2022-9-4 11:41
大佬的库也能解决这个问题吗...
我没看到用webworker呀知识盲区了
(我好像懂了,MutationObserve ...

MutationObserver应该不受影响吧,我也不太确定,不知道是什么浏览器。

steven026 发表于 2022-9-4 12:04:42

李恒道 发表于 2022-9-4 11:41
大佬的库也能解决这个问题吗...
我没看到用webworker呀知识盲区了
(我好像懂了,MutationObserve ...

我觉得这单纯的只是setTimeout的问题
MutationObserver或者setInterval应该都能解决
页面越多运行速度越慢 有些元素还是异步要通过后端返回数据才加载,光一个setTimeout 5000肯定不靠谱

bigrain 发表于 2022-9-4 20:06:08

王一之 发表于 2022-9-4 10:53
console.info(button);

这个日志有打印出来么?

还没试过,明天试试看。现在暂时有2个判断。
1个是setTimeout已经执行了,但是页面没加载完成,所以访问失败
2是根本没执行

用console.info可以试试看

bigrain 发表于 2022-9-4 20:06:59

cxxjackie 发表于 2022-9-4 11:33
估计是元素加载时机的问题,浏览器对非活动状态的标签页做了限制,可能是setTimeout/setInterval受到了影响 ...

太强了,我去试试看
页: [1] 2 3
查看完整版本: 2个脚本,A脚本打开页面B,页面B里面有定时代码,但是不y...