优酷网页版下载列表是前端临时UI,无法彻底关闭但可阻止弹出;其触发依赖MSE支持、用户历史操作及CDN策略,通过清除localStorage或拦截下载函数可实现临时抑制。

优酷网页版的“下载管理”和“HTML5 下载列表”不是系统级开关,而是由播放页行为、浏览器设置、CDN 节点策略共同触发的临时 UI 层——关不掉「下载列表」本身,但能阻止它弹出来。
为什么点视频就弹出下载列表(HTML5 下载管理)
这是优酷新版播放器在检测到当前环境支持 MediaSource Extensions 且用户曾点击过「下载」按钮后,自动挂载的浮动面板。它不依赖插件,纯前端实现,所以没有传统意义上的「设置开关」。
常见错误现象:Uncaught TypeError: Cannot read property 'show' of undefined 出现在控制台,说明你试图调用已销毁的下载管理实例;或者反复刷新后列表仍自动展开,其实是 localStorage 里存了 youku_download_panel_opened: true。
- 该面板只在 Chrome / Edge(Chromium 内核)上稳定出现,Firefox 默认禁用 MSE,Safari 兼容性差,基本不触发
- 是否弹出取决于当前视频是否开启「离线缓存」权限(优酷后台策略),不是所有视频都支持
-
localStorage中的youku_download_panel_opened和youku_download_last_video_id是关键控制项
手动关闭当前下载列表(立即生效)
打开浏览器开发者工具(F12),切换到 Console 面板,粘贴执行:
立即学习“前端免费学习笔记(深入)”;
localStorage.removeItem('youku_download_panel_opened'); localStorage.removeItem('youku_download_last_video_id');
然后刷新页面。如果列表还在,说明页面已缓存了 DOM 节点,可补一句:
document.querySelector('.yk-download-panel')?.remove();
- 不要用
display: none或visibility: hidden覆盖样式——优酷会监听offsetParent变化并重绘 - 这个操作只对当前域名(
www.youku.com)生效,换账号或清缓存后需重做 - 部分 CDN 节点会把面板渲染逻辑打包进
player.min.js,此时 DOM 移除只是临时压制
阻止下次自动弹出(持久化方案)
本质是让优酷播放器认为「用户没点过下载」且「没启用离线功能」。最轻量的方式是拦截关键函数调用:
Object.defineProperty(window, '__yk_download_open__', { value: () => {}, writable: false });
或更彻底地屏蔽下载入口:
document.addEventListener('click', e => { if (e.target.classList.contains('yk-btn-download')) e.stopImmediatePropagation(); }, true);
- 上述脚本可通过浏览器插件(如 Tampermonkey)注入,匹配 URL:
https://www.youku.com/* - 注意优酷会动态生成 class 名,
yk-btn-download可能变为yk-dl-btn-xxx,建议改用属性选择器:[data-action="download"] - 不要屏蔽
fetch或XMLHttpRequest对/download/的请求——这会导致视频无法加载
真正麻烦的是 CDN 动态下发的播放器逻辑:同一个视频,在北京节点可能弹窗,在广州节点直接跳过。这意味着本地脚本只能治标,没法一劳永逸——你得随时盯着 class 名变、storage key 变、钩子函数名变。











