上一主题 下一主题
ScriptCat,新一代的脚本管理器脚本站,与全世界分享你的用户脚本油猴脚本开发指南教程目录
返回列表 发新帖
楼主: wjy0 - 

一个视频页面,htmlDOM加载完毕,而视频没加载成功播放,

[复制链接]
  • TA的每日心情
    郁闷
    2023-6-22 14:10
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    19

    主题

    133

    回帖

    145

    积分

    中级工程师

    积分
    145

    油中2周年

    发表于 2022-7-22 17:26:21 | 显示全部楼层 | 阅读模式
    悬赏1油猫币未解决

    一个视频页面,htmlDOM加载完毕,而视频没加载成功播放,会触发onload事件吧?
    如何检测页面是否加载超时、加载不完全、页面视频加载不成功呢!

    网课需求,wx:466756115(全日制大学勿扰,大学生应当好好学习)
  • TA的每日心情
    郁闷
    2023-6-22 14:10
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    19

    主题

    133

    回帖

    145

    积分

    中级工程师

    积分
    145

    油中2周年

    发表于 2022-7-22 17:28:18 | 显示全部楼层
    网课需求,wx:466756115(全日制大学勿扰,大学生应当好好学习)
    回复

    使用道具 举报

  • TA的每日心情
    郁闷
    2023-6-22 14:10
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    19

    主题

    133

    回帖

    145

    积分

    中级工程师

    积分
    145

    油中2周年

    发表于 2022-7-22 17:30:23 | 显示全部楼层
    其实场景就是挂机看网课,偶尔会出现页面加载不成功或页面视频加载不成功的情况!
    网课需求,wx:466756115(全日制大学勿扰,大学生应当好好学习)
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2024-10-28 07:07
  • 签到天数: 193 天

    [LV.7]常住居民III

    712

    主题

    5961

    回帖

    6760

    积分

    管理员

    非物质文化遗产社会摇传承人

    积分
    6760

    荣誉开发者喜迎中秋油中2周年生态建设者

    发表于 2022-7-22 17:46:00 | 显示全部楼层
    我个人的方案是监控视频的进度事件
    每隔20s检测一下时长是否变化
    如果变化证明还在播放
    如果没变化了证明播放完毕或者播放失败了
    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道

    入驻了爱发电https://afdian.net/a/lihengdao666
    个人宣言:この世界で私に胜てる人とコードはまだ生まれていません。死ぬのが怖くなければ来てください。
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2022-3-8 11:41
  • 签到天数: 2 天

    [LV.1]初来乍到

    22

    主题

    881

    回帖

    1379

    积分

    荣誉开发者

    积分
    1379

    荣誉开发者卓越贡献油中2周年生态建设者油中3周年挑战者 lv2

    发表于 2022-7-22 21:18:52 | 显示全部楼层
    我觉得这个问题可以简化为:如果到达规定的超时时间后视频仍然无法播放,那就刷新页面。这样就不用管onload,因为页面加载不成功必然会导致视频无法播放。下面的方法用到了ElementGetter(https://bbs.tampermonkey.net.cn/thread-2726-1-1.html):
    1. const elmGetter = new ElementGetter();
    2. function waitForVideoLoad(selector, timeout) {
    3.     return new Promise((resolve, reject) => {
    4.         elmGetter.get(selector, document, timeout).then(video => {
    5.             if (video) {
    6.                 if (video.duration > 0) resolve();
    7.                 video.addEventListener('canplay', resolve);
    8.             }
    9.         });
    10.         setTimeout(reject, timeout);
    11.     });
    12. }
    13. // 选择器和超时时间可根据需要修改
    14. waitForVideoLoad('video', 10000).catch(() => location.reload());
    复制代码
    回复

    使用道具 举报

  • TA的每日心情
    郁闷
    2023-6-22 14:10
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    19

    主题

    133

    回帖

    145

    积分

    中级工程师

    积分
    145

    油中2周年

    发表于 2023-3-23 02:12:56 | 显示全部楼层
    cxxjackie 发表于 2022-7-22 21:18
    我觉得这个问题可以简化为:如果到达规定的超时时间后视频仍然无法播放,那就刷新页面。这样就不用管onload ...

    谢谢,后来我是这个思路,自己写的代码
    网课需求,wx:466756115(全日制大学勿扰,大学生应当好好学习)
    回复

    使用道具 举报

    发表回复

    本版积分规则

    快速回复 返回顶部 返回列表