ZYMKJ 发表于 2022-9-22 15:53:23

油猴脚本 无法读取页面内iframe下的 class信息

本帖最后由 ZYMKJ 于 2022-9-26 14:55 编辑

上个问题 可以忽略。PS.顺便问一句,如何关闭悬赏贴。
我发现一个bug,我完全不需要跨iframe读取“开始学习”这个class。因为只要打开那个网页,后台就开始计时。
所以,忽略就完事了。
但有一个新的问题。就是设置定时关闭新打开的网页B(图片2),然后延迟3秒刷新网页A(图片1)
现在网页B 最下面有一个标签<script type="text/javascript">
document.oncontextmenu = function(){
         return false;
}
readAssist("2878","10","481","20.0","2400","/study", 240);
< /script>
(图3)
在控制台输入readassist,显示如下代码:
(function(window,$){
      var timer1;
      var timer2;
      window.readAssist=function(id,source,postion,percent,len,root,timespace)
      {
            var reloginpage=root+"/page/common-tokenerror";
            var assist=new Object;
            assist.hid=0;
            assist.url=root+"/resource/saveTssView";
            assist.source=source;
            assist.postion=postion;
            assist.percent=percent;
            assist.len=len;
            assist.time=parseInt(new Date().getTime()/1000);
            if(timespace&&!isNaN(timespace)){
                assist.timespace=timespace*1000
            }
            else
            {
                assist.timespace=60000
            }
            var result=new Object();
            result.cid=id;
            result.source=assist.source;
            result.position=assist.postion;
            result.percent=assist.percent;
            assist.first=function(){
                if(assist.hid==0){
                  $.ajax({
                        url:assist.url,data:JSON.stringify(result),type:"post",dataType:"json",timeout:20000,contentType:'application/json;charset=utf-8',error:function(message){
                            window.wxc.xcConfirm("网络繁忙,请稍后刷新页面重试!","studyWarning")
                        },
                        success:function(data){
                            if(data){
                              if(data.status==0){
                                    assist.hid=data.id;
                                    if(assist.timespace!=0){
                                        timer1=window.setInterval(function(){
                                          assist.progressing()
                                        },
                                                                  assist.timespace);
                                        timer2=window.setTimeout(function(){
                                          assist.progressing();
                                          clearInterval(timer1)
                                        },
                                                               (parseInt(len))*1000)
                                    }
                              }
                              else if(data.status==1){
                                    window.wxc.xcConfirm("获得初始进度失败,请刷新页面重试!","studyWarning")
                              }
                            }
                        }
                  }
                        )
                }
            };
            assist.progressing=function(){
                var now=parseInt(new Date().getTime()/1000);
                if(assist.postion==""){
                  assist.postion=now-assist.time
                }
                else{
                  assist.postion=parseInt(assist.postion)+(now-assist.time)
                }
                assist.time=now;
                var result=new Object();
                result.historyId=assist.hid;
                result.position=assist.postion;
                result.len=assist.len;
                result.cid=id;$.ajax({
                  url:assist.url,data:JSON.stringify(result),type:"post",dataType:"json",timeout:20000,contentType:'application/json;charset=utf-8',error:function(message){
                        window.wxc.xcConfirm("网络繁忙,请稍后刷新页面重试!","error")
                  },
                  success:function(data){
                        if(data){
                            if(data.status==0){
                            }
                            else if(data.status==1){
                              window.wxc.xcConfirm("进度记录失败,请刷新页面重试!","studyWarning")
                            }
                            else if(data.status==2){
                              window.clearTimeout(timer1);
                              window.clearTimeout(timer2);
                              window.wxc.xcConfirm("不能同时学习多门课程,点击确认关闭窗口。","readCourse",{
                                    onOk:function(v){window.close()
                                                    }
                              }
                                                    )
                            }
                        }
                  }
                }
                                    )
            };
            assist.history=function(){
                if(assist.hid==0){
                  assist.first()
                }
                else{
                  assist.progressing()
                }
            };
            assist.history();
            return assist
      }
    }
    )
    (window,$);

我需要在外置脚本中 调用len(变量)这个数值设定为自动关闭网页B的时间,Len+5秒为刷新网页A的时间。现在不会调取当前网页的len,并把这个len值设为自动关闭网页的时间。



李恒道 发表于 2022-9-22 15:53:24

https://bbs.tampermonkey.net.cn/forum.php?mod=viewthread&tid=2267&highlight=%5B%E8%84%9A%E6%9C%AC%E5%AE%9E%E6%88%98%E7%AF%87%5D
跨域实战
善用论坛搜索
各种教程非常完善的

steven026 发表于 2022-9-22 16:02:01

同域iframe
document.querySelectorAll("iframe").contentWindow.document.querySelector(这里填CLASS选择器)
跨域iframe建议看这篇
[油猴开发指南]关于脚本如何处理iframe的碎碎念
https://bbs.tampermonkey.net.cn/thread-2895-1-1.html
(出处: 油猴中文网)

ZYMKJ 发表于 2022-9-22 18:39:42

李恒道 发表于 2022-9-22 17:21
https://bbs.tampermonkey.net.cn/forum.php?mod=viewthread&tid=2267&highlight=%5B%E8%84%9A%E6%9C%AC%E5 ...

就是看到你的B站视频,然后找到论坛帖子,然后开始动手写自己刷课脚本{:4_89:}

李恒道 发表于 2022-9-22 18:58:37

ZYMKJ 发表于 2022-9-22 18:39
就是看到你的B站视频,然后找到论坛帖子,然后开始动手写自己刷课脚本 ...
卡在哪里直接在论坛搜就可以
b站连起步都没讲完...
论坛密度差不多是b站教程的五六倍
{:4_94:}

ZYMKJ 发表于 2022-9-22 19:23:02

本帖最后由 ZYMKJ 于 2022-9-22 19:24 编辑

李恒道 发表于 2022-9-22 18:58
卡在哪里直接在论坛搜就可以
b站连起步都没讲完...
论坛密度差不多是b站教程的五六倍

现在前面几步都能对付过去。就最后一步 点击“开始学习”卡住了。 设计到跨域 iframe,
A页面: https://111.aaa.cn/bbb/ccc,其中播放器是iframe src=https://123.aaa.cn/def/mkj
然后那个“开始学习”也不是按钮,而是一个class,但是可以点击,click 命令可以实现点击。现在就是在A页面 读取不到 “开始学习”的class,这不正在研究吗。


从你的【脚本实战篇】 第一个开始看起

李恒道 发表于 2022-9-22 20:59:45

ZYMKJ 发表于 2022-9-22 19:23
现在前面几步都能对付过去。就最后一步 点击“开始学习”卡住了。 设计到跨域 iframe,
A页面: https://1 ...
哥哥加油
steven推荐的也可以看看
他的是针对跨域的

笑尘天雨 发表于 2022-9-24 20:42:50

ZYMKJ 发表于 2022-9-22 19:23
现在前面几步都能对付过去。就最后一步 点击“开始学习”卡住了。 设计到跨域 iframe,
A页面: https://1 ...

都是aaa.cn,主域名相同,应该可以获取。
参考链接:https://bbs.tampermonkey.net.cn/thread-3269-1-1.html

ZYMKJ 发表于 2022-9-26 14:34:51

本帖最后由 ZYMKJ 于 2022-9-26 14:49 编辑

此回复删除了。在1楼编辑了。

ZYMKJ 发表于 2022-9-26 14:40:42

另外这个悬赏 怎么结束?
页: [1]
查看完整版本: 油猴脚本 无法读取页面内iframe下的 class信息