视频自动网页全屏|倍速播放

Created at 7 months ago
Updated at a day ago
支持所有H5视频的增强脚本,通用网页全屏|倍速调节;B站(含直播) / 腾讯视频 / 优酷 / 爱奇艺 / 芒果TV / AcFun 默认自动网页全屏,其他网站可手动开启;自动网页全屏 + 记忆倍速 + 下集切换,减少鼠标操作,让追剧更省心、更沉浸;支持视频旋转、截图、镜像翻转、缩放与移动、记忆播放进度等功能
Total Installs
56,158
Today's New
+24
User Rating
5.0 / 5.0 (3)
Current Version
3.10.1

设置为适用于所有网站

参考设置:https://pic1.imgdb.cn/item/696662c00e6bc0c5db9822b5.png

脚本菜单

  1. 此站启/禁用自动网页全屏(非 @match 网站时显示)
  2. 删除此站剧集选择器 (有手动适配时显示)
  3. 此站脱离式全屏阈值
  4. 快捷键说明
  5. 更多设置

快捷键大全

快捷键 说明 快捷键 说明
Enter 全屏 P 网页全屏
N 切换下集 R 旋转 90°
M 静音切换 D 弹幕显/隐
K / L 上下帧 Shift + R 水平镜像
Ctrl + Z 复位缩移 Shift + A 启/禁自动下集
Ctrl + Alt + S 截图 Alt + / 缩放
A / S 或 / ±倍速 Alt + ◀️🔼 移动
Ctrl 1️⃣~5️⃣ 预设倍速 1️⃣~9️⃣ 1️⃣ - 9️⃣ 倍速
数字 0️⃣ 快进 30 秒 ◀️▶️ 快退/进 (默禁)
空格 播放/暂停 (默禁)

网页全屏 | 倍速

理论上支持所有含 HTML5 <video> 的视频网页,覆盖绝大多数视频播放场景。

支持微博、推特等多视频平台 —— 哪个视频处于播放状态,即可直接对其进行网页全屏、播放倍速调节等操作。

自动网页全屏

脚本默认只对 @match 配置的网站自动网页全屏,若需对其他的网站启用自动网页全屏,按以下配置即可快速生效。

1. 对所有网站生效

将脚本中的:

// @note        *://*/*

修改为:

// @match        *://*/*

推荐在插件的脚本设置面板中完成用户匹配规则的配置;后续脚本更新时,即可避免重复修改。

参考设置:https://pic1.imgdb.cn/item/696662c00e6bc0c5db9822b5.png

2. 对特定网站生效(以咕咕番为例)

使用 @include 指定单个网站:

// @include      *://www.gugu3.com/*

3. 对嵌套框架页生效(如 E 站弹幕网)

若视频在 iframe 框架中播放,需同时匹配主页面和框架页的域名:

// @include      *://www.ezdmw.site/Index/video/*
// @include      *://player.ezdmw.com/danmuku/*

修改完成后,刷新视频页面并等待视频完全加载,再在脚本菜单中点击「此站启用自动网页全屏」。设置成功后,视频开始播放时将自动进入网页全屏。

⚠️ 注意:配置特定网站时须用 @include,而非 @match@match 触发的是网站自带的图标,如果配置成 @match ,还需要在 class Site 中定义相关图标的 CSS 选择器)。

如要对 PPTV聚力视频 自动网页全屏,配置成:

// @match      *://v.pptv.com/show/*

则需在脚本的 class Site 中,新增以下配置:

// full-全屏,webFull-网页全屏,danmaku-弹幕开关,next-下集
static selectors = {
"v.pptv.com": { full: ".w-zoom-container div", webFull: ".w-expand-container div", danmaku: ".w-barrage div", next: ".w-next" },
};

反之亦然!!!

忽略特定页面

「此站启用自动网页全屏」后,将对目标域名下的所有页面生效(例如 YouTube 的搜索结果、短视频等场景)。若需排除不需要自动的页面,可按以下步骤操作:

  1. 进入「更多设置」→「忽略设置」→「自动网页全屏时忽略的网址」
  2. 添加目标页面的网址(如输入:https://www.youtube.com/shorts 即可排除短视频页)

⚠️ 注意:该功能不支持模糊匹配,仅采用「前缀匹配」逻辑(即仅匹配以输入网址开头的页面)

  • 若输入带路径的网址(如 https://www.youtube.com/shorts),则匹配所有以该路径开头的子页面;
  • 若仅输入域名网址(如 https://www.youtube.com),仅匹配该网站首页,不会作用于任何子页面。

通用下集切换

脚本默认 @match 配置的网站,使用站点自带的下集图标,点击对应元素完成下集切换。

对于其他第三方视频网站,脚本提供了通用性较强的下集切换方案,让你在全网不同站点都能享受一致、顺畅的下一集体验。

1. 对所有网站生效

将脚本中的:

// @note        *://*/*

修改为:

// @match        *://*/*

2. 对特定网站生效(以咕咕番为例)

使用 @include 指定单个网站:

// @include      *://www.gugu3.com/*

配置完成后,测试网站是否能成功切换下集。

自动切换下集

功能默认处于禁用状态,需手动在脚本菜单中开启以激活使用。

设置路径:「更多设置」→「控制」→「启用自动切换至下集」或按 Shift A 快捷键。

自定义选项

  • 提前切换秒数:「参数」→「下集提前秒数」(视频距离结束前 N 秒切换)
  • 忽略网址:「忽略设置」→「自动切换下集时忽略的网址」(如 B 站非番剧页)

限制:时长小于 5 分钟的视频不会触发自动切换下集

手动拾取元素适配(解决切换失败问题)

若遇到网站无法成功切换下集,或跳转至错误地址的情况,可通过手动适配的方式,尝试解决切换失败问题。

若需重新适配网站,需先在脚本菜单中点击「删除此站剧集选择器」,清除旧有配置后再进行适配操作。

第一步:拾取当前播放集数
  1. 同时按住键盘 Ctrl + Alt 键,用鼠标点击当前播放集数的位置(如播放页显示的 “第 1 集”)。
  2. 验证与保存:
    • 拾取成功后会弹出窗口,点击「验证」若正确提示集数,点击「保存」,进入第二步;
    • 若提示 获取集数失败,手动编辑文本框中的选择器代码,修改后再次点击「验证」,成功后保存。
第二步:拾取集数列表中的任意一集
  1. 完成当前集数拾取后,继续按住 Ctrl + Alt 键,点击剧集列表(如侧边栏或底部列表)中的任意一集(如 “第 2 集”)。
  2. 验证与保存:
    • 弹窗会显示拾取的元素信息,点击「验证」按钮,若显示完整集数列表,点击「保存」完成配置。
    • 若提示 获取集数失败 或验证时显示的集数列表(如数量)有误,手动编辑选择器代码,修改后再次点击「验证」,直至显示正确集数后保存。
第三步:验证

前面歩骤操作完成后,按键盘 N 键,测试是否能成功正确的切换至下一集。

手动适配示例:

示例一:56网 (动态 class 问题)

在该网站上默认拾取到的元素选择器,验证时不能获取到当前播放集数。

原因是:当鼠标移入目标元素时,会动态添加临时 class;而当元素失去焦点后,该 class 会自动移除。由于默认拾取的选择器包含此动态 class,导致无法获取当前播放集数。

解决方法:手动删除动态添加的 class,即可成功匹配目标元素并获取当前播放集数。

图片
示例二:注视影视 (集数标识位置特殊)

在该网站上当前播放的集数在剧集列表中无明确标识(如高亮、特殊样式或独有 class),导致无法通过列表元素直接区分正在播放的集数是哪一个。

虽列表无法识别,但页面顶部标题栏中存在包含当前播放集数的明确文本,第一步拾取,可选取标题栏的集数元素定位当前播放集数。

图片
示例三:网易公开课 (选择器层级问题)

在该网站上第二步拾取元素并点击「验证」时,提示的集数列表与页面实际显示不一致,通过调整元素选择器的层级结构后,最终成功获取正确数据。

图片

测试网站

脚本已针对以下导航站收录的影视动漫类网站,完成下集切换功能的通用性测试:

自定义此站视频容器

设置路径:「更多设置」→「全屏设置」→「自定义此站视频容器」

该功能允许您为当前网站设置个性化的视频容器,解决网页全屏时可能出现的各种适配问题,例如:

  • 保留特定区域(如弹幕、控制按钮)在网页全屏模式中始终可见
  • 解决部分网页全屏后内容被截断、缩放异常等问题

示例

网站 CSS 选择器 效果说明
抖音 #slidelist > div 全屏后能切换视频
吐槽弹幕网 #m_dplayer 显示底部控制栏
虎牙直播 #videoContainer 显示底部控制栏

其他功能

1. 空格◀️▶️ 控制

默认处于禁用状态,需手动开启后使用。

设置路径:「更多设置」→「控制」→「启用 空格◀️▶️ 控制」

自定义选项:「更多设置」→「参数」→「快进/退秒数」

解决的问题:

  • 调整播放器默认快退/进秒数
  • 视频在 iframe 中无需手动聚焦也能操控视频

2. 自动退出网页全屏

脚本默认支持 B 站和 AcFun 弹幕网,在视频播放结束后自动退出全屏状态(番剧页面不支持)。对于 B 站,还会自动点击「取消连播」按钮,避免自动播放下一个视频。

如需关闭此功能,请在脚本中注释掉以下代码:

this.autoExitWebFullscreen();

3. 标签页不可见时自动暂停

默认启用:视频标签页切换到后台(不可见)时自动暂停,切回时自动播放。

  • 关闭路径:「更多设置」→「控制」→「禁用 不可见暂停」

4. 预设常用倍速

支持自定义常用的播放倍速,通过 Ctrl + 数字键【1~5】 一键设置,提升效率。

设置路径:「参数」→「常用倍速」(多值用英文逗号分隔,例:1.15,1.45,1.75

  • 映射规则:Ctrl + 1Ctrl + 5 分别对应预设倍速列表的第 1 至第 5 项
    • 示例:预设值为 1.15,1.45,1.75 时,Ctrl + 1 对应 1.15 倍、Ctrl + 2 对应 1.45 倍、Ctrl + 3 对应 1.75 倍

5. 全屏模式下显示时间

默认在全屏模式右上角显示:系统时间、视频剩余时长、进度百分比。

自定义选项

  • 调整颜色:「参数」→「时间颜色」
  • 非全屏显示:启用「非全屏显时间」功能

限制:≤30秒视频不显示剩余时长和进度百分比

6. 侧边单击网页全屏

将鼠标移至视频左右两侧边缘区域,当鼠标光标发生变化时 ,点击即可切换网页全屏状态。

解决的问题:

  • 在微博、X、Instagram 等平台浏览视频时,无需抬手按键盘快捷键,即可便捷切换网页全屏。
  • 避免外层父窗口视频影响内嵌 iframe 视频的网页全屏(www.reddit.com)

7. 脱离式全屏阈值

解决的问题:

  • 在单页应用(SPA)或多视频列表页中,如果通过「自定义此站视频容器」仍无法解决全屏异常,可尝试调整此阈值。

    示例:YouTube Shorts新版贴吧 未修改阈值时切换网页全屏异常,修改阈值为 10 后可正常切换。

  • 缓解(网页)全屏切换卡顿、不流畅问题。

    示例:www.reddit.com 无限滚动加载内容,切换(网页)全屏存在明显延迟(iframe无法解决o(╥﹏╥)o)

8. 执行自定义代码逻辑

可访问的值:type, video, unsafeWindow, Tools, App

  • 自定义页面加载事件处理逻辑

    事件类型(type):DOMContentLoadedload

    示例一:https://www.bilibili.com/

    // if(type === "DOMContentLoaded") console.log('DOM 树已构建完成,可以操作 DOM 元素了!');
    // if(type === "load") console.log('页面资源已加载完!');
    
    Tools.sleep(3000).then(() => {
      // 解决B站未登录时,播放一分钟左右弹出登录窗的问题
      if (unsafeWindow.__BiliUser__?.isLogin) return;
      unsafeWindow.__BiliUser__.cache.data.isLogin = true;
      unsafeWindow.__BiliUser__.cache.data.mid = Date.now();
    });
    

    示例二:https://www.dadaqu.cc/、https://www.jddzx.cc/、https://jnvod.cc/

    // 需要点击才会加载视频资源
    if(type === "load") Tools.query("body > #start")?.click();
    
  • 自定义视频各种事件处理逻辑

    事件类型(type):loadstartloadedmetadataloadeddatatimeupdateratechangecanplayplayingended

    示例一:https://www.bilibili.com/

    // B站已登录时,清晰度切换为 1080P
    if(type === "playing"){
      if (!document.cookie.includes("DedeUserID") || !unsafeWindow.player) return;
      const current = unsafeWindow.player.getQuality().realQ;
      const list = unsafeWindow.player.getSupportedQualityList();
      const target = list.find((quality) => quality === 80) ?? list[0];
      if (current !== target) unsafeWindow.player.requestQuality(target);
    }
    

    也可以放到页面 load 事件中处理,这里只是用于举例。

    示例二:https://live.bilibili.com/

    // B站直播切换最高清晰度
    if (type === "playing") {
      Tools.sleep(1500).then(() => {
        const info = unsafeWindow.top?.livePlayer?.getPlayerInfo();
        const qn = info?.qualityCandidates?.[0]?.qn ?? "10000";
        if (info?.quality !== qn) unsafeWindow.top?.livePlayer?.switchQuality(qn);
      });
    }
    
  • 自定义全屏切换处理逻辑

    事件类型(type):isFull、isWFull、default

    if (type === "isFull") {
      console.log("进入全屏模式!");
    } else if (type === "isWFull") {
      console.log("进入网页全屏模式!");
    } else {
      console.log("退出(网页)全屏模式!");
    }
    

    示例一:https://www.bilibili.com/

    // 设置音量均衡
    if(type === "default") return;
    Tools.query('.bpx-player-ctrl-setting-loudness input[value="1"]')?.click();