V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
推荐关注
Meteor
JSLint - a JavaScript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
JavaScript 权威指南第 5 版
Closure: The Definitive Guide
maloneleo88

[求助] 关于油猴脚本加载的问题!

  •  
  •   maloneleo88 · May 5, 2021 · 3211 views
    This topic created in 1821 days ago, the information mentioned may be changed or developed.
    加了 window.load 网页的子页面就卡住不继续加载了
    不加 window.load 脚本就无法生效。(我猜测是子页面还没加载出来,脚本已经执行完了)

    有啥子办法吗?

    那种单页面的直接 window.onload=function(){}就可以。。 这种异步页面的应该怎么搞? #挠头
    11 replies    2021-05-08 18:29:39 +08:00
    xiaoming1992
        1
    xiaoming1992  
       May 5, 2021 via Android
    我怎么听不太懂?子页面是什么?怎么卡住?。。。
    maloneleo88
        2
    maloneleo88  
    OP
       May 5, 2021 via Android
    @xiaoming1992 我外行,应该怎么形容呢。http://zq.win007.com/cn/subleague.aspx?sclassid=60

    就是这种页面的 tbody 里的内容。 我用油猴 写入 window.onload=function(){}后 tbody 里的内容就永远在加载中
    maloneleo88
        3
    maloneleo88  
    OP
       May 5, 2021 via Android
    这应该是 js 动态生成的动态页面吧,怎么才能等这个 js 执行完了再执行我油猴里的脚本
    dream4ever
        4
    dream4ever  
       May 5, 2021
    @maloneleo88 最简单粗暴的方式,用 setTimeout 不断查询指定元素,有你需要的内容了,再执行具体脚本。
    xiaoming1992
        5
    xiaoming1992  
       May 5, 2021
    估计他的页面也是用的 window.onload, 所以你的 window.onload 把他的 onload 替换了。。。可以试试用 addEventListener
    maloneleo88
        6
    maloneleo88  
    OP
       May 6, 2021
    @dream4ever
    @xiaoming1992

    谢谢,我试一下, 又有问题了。
    maloneleo88
        7
    maloneleo88  
    OP
       May 6, 2021 via Android
    @xiaoming1992
    @dream4ever

    用三秒大法暂时对付了,老板们谁能贴个监听元素的代码呀。 因为动态页一刷新就没用了,暂时放了个调用函数的按钮。 如果能监听元素的话就好了,内容更新直接调用脚本
    kid740246048
        8
    kid740246048  
       May 6, 2021
    ```
    window.addEventListener('load', ()=>{console.log('ready')})
    ```
    这样不就行了
    Puteulanus
        9
    Puteulanus  
       May 6, 2021
    监听元素可以用 MutationObserver
    512357301
        10
    512357301  
       May 6, 2021
    @maloneleo88

    这是我用的代码:

    window.onload = setTimeout(click_item,500);

    function click_item(){
    if(document.querySelector('.xxx')){
    //你的代码

    }else{

    //继续等待
    setTimeout(click_item,300) //300 毫秒
    }
    }
    maloneleo88
        11
    maloneleo88  
    OP
       May 8, 2021
    @512357301 onload 肯定是不行的。 我也不知道咋回事 , 加了界面就刷不全, 现在就用延迟 3 秒。还行 比较稳定
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2393 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 626ms · UTC 11:41 · PVG 19:41 · LAX 04:41 · JFK 07:41
    ♥ Do have faith in what you're doing.