V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a JavaScript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
JavaScript 权威指南第 5 版
Closure: The Definitive Guide
maloneleo88
V2EX  ›  JavaScript

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

  •  
  •   maloneleo88 · 2021-05-05 19:49:58 +08:00 · 2328 次点击
    这是一个创建于 1058 天前的主题,其中的信息可能已经有所发展或是发生改变。
    加了 window.load 网页的子页面就卡住不继续加载了
    不加 window.load 脚本就无法生效。(我猜测是子页面还没加载出来,脚本已经执行完了)

    有啥子办法吗?

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

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

    谢谢,我试一下, 又有问题了。
    maloneleo88
        7
    maloneleo88  
    OP
       2021-05-06 02:22:31 +08:00 via Android
    @xiaoming1992
    @dream4ever

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

    这是我用的代码:

    window.onload = setTimeout(click_item,500);

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

    }else{

    //继续等待
    setTimeout(click_item,300) //300 毫秒
    }
    }
    maloneleo88
        11
    maloneleo88  
    OP
       2021-05-08 18:29:39 +08:00
    @512357301 onload 肯定是不行的。 我也不知道咋回事 , 加了界面就刷不全, 现在就用延迟 3 秒。还行 比较稳定
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3236 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 12:10 · PVG 20:10 · LAX 05:10 · JFK 08:10
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.