Greasy Fork is available in English.
支持所有H5视频的增强脚本,通用网页全屏|倍速调节;B站(含直播) / 腾讯视频 / 优酷 / 爱奇艺 / 芒果TV / AcFun 默认自动网页全屏,其他网站可手动开启;自动网页全屏 + 记忆倍速 + 下集切换,减少鼠标操作,让追剧更省心、更沉浸;支持视频旋转、截图、镜像翻转、缩放与移动、记忆播放进度等功能
当前为
参考设置:https://pic1.imgdb.cn/item/696662c00e6bc0c5db9822b5.png
@match 网站时显示)| 快捷键 | 说明 | 快捷键 | 说明 |
|---|---|---|---|
| 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 的搜索结果、短视频等场景)。若需排除不需要自动的页面,可按以下步骤操作:
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 快捷键。
自定义选项:
限制:时长小于 5 分钟的视频不会触发自动切换下集
若遇到网站无法成功切换下集,或跳转至错误地址的情况,可通过手动适配的方式,尝试解决切换失败问题。
若需重新适配网站,需先在脚本菜单中点击「删除此站剧集选择器」,清除旧有配置后再进行适配操作。
Ctrl + Alt 键,用鼠标点击当前播放集数的位置(如播放页显示的 “第 1 集”)。获取集数失败,手动编辑文本框中的选择器代码,修改后再次点击「验证」,成功后保存。Ctrl + Alt 键,点击剧集列表(如侧边栏或底部列表)中的任意一集(如 “第 2 集”)。获取集数失败 或验证时显示的集数列表(如数量)有误,手动编辑选择器代码,修改后再次点击「验证」,直至显示正确集数后保存。前面歩骤操作完成后,按键盘 N 键,测试是否能成功正确的切换至下一集。
在该网站上默认拾取到的元素选择器,验证时不能获取到当前播放集数。
原因是:当鼠标移入目标元素时,会动态添加临时 class;而当元素失去焦点后,该 class 会自动移除。由于默认拾取的选择器包含此动态 class,导致无法获取当前播放集数。
解决方法:手动删除动态添加的 class,即可成功匹配目标元素并获取当前播放集数。
在该网站上当前播放的集数在剧集列表中无明确标识(如高亮、特殊样式或独有 class),导致无法通过列表元素直接区分正在播放的集数是哪一个。
虽列表无法识别,但页面顶部标题栏中存在包含当前播放集数的明确文本,第一步拾取,可选取标题栏的集数元素定位当前播放集数。
在该网站上第二步拾取元素并点击「验证」时,提示的集数列表与页面实际显示不一致,通过调整元素选择器的层级结构后,最终成功获取正确数据。
脚本已针对以下导航站收录的影视动漫类网站,完成下集切换功能的通用性测试:
设置路径:「更多设置」→「全屏设置」→「自定义此站视频容器」
该功能允许您为当前网站设置个性化的视频容器,解决网页全屏时可能出现的各种适配问题,例如:
| 网站 | CSS 选择器 | 效果说明 |
|---|---|---|
| 抖音 | #slidelist > div |
全屏后能切换视频 |
| 吐槽弹幕网 | #m_dplayer |
显示底部控制栏 |
| 虎牙直播 | #videoContainer |
显示底部控制栏 |
默认处于禁用状态,需手动开启后使用。
设置路径:「更多设置」→「控制」→「启用 空格◀️▶️ 控制」
自定义选项:「更多设置」→「参数」→「快进/退秒数」
解决的问题:
iframe 中无需手动聚焦也能操控视频B 站视频播放结束后自动退出全屏状态且点击「取消连播」按钮,避免自动播放下一个视频。
如需关闭此功能,请在脚本中注释掉以下代码:
this.autoExitFullscreen();
默认启用:视频标签页切换到后台(不可见)时自动暂停,切回时自动播放。
支持自定义常用的播放倍速,通过 Ctrl + 数字键【1~5】 一键设置,提升效率。
设置路径:「参数」→「常用倍速」(多值用英文逗号分隔,例:1.15,1.45,1.75)
Ctrl + 1 至 Ctrl + 5 分别对应预设倍速列表的第 1 至第 5 项
1.15,1.45,1.75 时,Ctrl + 1 对应 1.15 倍、Ctrl + 2 对应 1.45 倍、Ctrl + 3 对应 1.75 倍默认在全屏模式右上角显示:系统时间、视频剩余时长、进度百分比。
自定义选项:
限制:≤30秒视频不显示剩余时长和进度百分比
将鼠标移至视频左右两侧边缘区域,当鼠标光标发生变化时 ,点击即可切换网页全屏状态。
解决的问题:
解决的问题:
示例: 在 YouTube Shorts、新版贴吧 未修改阈值时切换网页全屏异常,修改阈值为 10 后可正常切换。
示例: 在 www.reddit.com 无限滚动加载内容,切换(网页)全屏存在明显延迟(iframe无法解决o(╥﹏╥)o)
可访问的值:type, video, unsafeWindow, Tools
设置路径:「更多设置」→「增强」→「此站 load 事件扩展代码」
注意: 自定义加载事件逻辑,需要刷新页面才能看到效果!!!
事件类型(type):DOMContentLoaded、load
示例一:https://www.bilibili.com/
// if(type === "DOMContentLoaded") console.log('DOM 树已构建完成,可以操作 DOM 元素了!');
// if(type === "load") console.log('页面资源已加载完!');
// 解决B站未登录时,播放一分钟左右弹出登录窗的问题
Tools.waitFor(() => unsafeWindow.__BiliUser__ && !unsafeWindow.__BiliUser__.isLogin, { interval: 300 }).then(() => {
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();
示例三:重写获取下集跳转元素的逻辑
/**
* 获取跳转目标集数的元素
* @param isPrev 是否跳转上一集;true = 上一集,false = 下一集
* @returns 要点击的元素
*/
GM_E9X_FS.getJumpTargetEpisode(isPrev: boolean): HTMLElement;
// 默认只能本章节内切换,重写逻辑使其不限于本章节切换
GM_E9X_FS.getJumpTargetEpisode = function () {
const all = Tools.querys(".sec-li a"); // 章节视频列表
const currIndex = all.findIndex((el) => el.href.includes(location.pathname)); // 当前播放的
return all[currIndex + 1]; // 要播放的下一个视频
};
// 直接获取“下一节”元素
GM_E9X_FS.getJumpTargetEpisode = () => Tools.query(".icon-next-fill");
设置路径:「更多设置」→「增强」→「此站视频事件扩展代码」
事件类型(type):loadstart、loadedmetadata、loadeddata、timeupdate、ratechange、canplay、playing、ended
示例一:https://www.bilibili.com/
// B站已登录时,清晰度切换为 1080P,Tools.isExecuted() 用于标记只执行一次
if (type !== "playing" || Tools.isExecuted("setBiliQuality")) return;
Tools.waitFor(() => unsafeWindow.player && document.cookie.includes("DedeUserID"), { interval: 300 }).then(() => {
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.isExecuted("setBiliLiveQuality")) return;
Tools.waitFor(() => unsafeWindow.top?.livePlayer, { interval: 500 }).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("退出(网页)全屏模式!");
}