- 2026-09-09 v1.0 初版
- 2026-09-10 v1.1 修复长按无效果的问题, 更新源码及快捷指令;
- 已下载t66y.js的请在文件app里删除该文件, 快捷指令已换链接, 请重新下载并替换, 再运行快捷指令
- 2026-09-11 代码无修改, 添加隐藏预览的操作说明(在第4点底部)
感谢@黢黑 @贡献+1 大佬的指正
下面是详细步骤
1. 需要安装3个app:文件快捷指令Userscipts
2. 打开Userscipts app点击下方的Userscripts App Documents, 记住当前目录所在的位置
![]()
![]()
![]()
比如我的位置在"我的iPhone"
3. 运行快捷指令写入js文件至Userscipts主目录https://www.icloud.com/shortcuts/a8b2cb39481d4d0286d7023d891684a7添加指令, 直接点击该指令就会运行, 会提示保存到哪里
![]()
![]()
选择上面记住的位置, 并点右上角的Open(打开)即可
按上面第2步再看下目录里是否有t66y.js, 没有的话表示捷径没执行成功
![]()
4. Safari随便点个带视频的帖子地址栏最左边点开小图标, 选择管理扩展
![]()
把Userscripts点亮
![]()
点Userscripts
![]()
确保草榴视频下载这个js是亮的就行
![]()
刷新下当前帖子, 视频下方出现下载图标就是成功了, 长按箭头选下载链接文件即可下载.
![]()
若长按后自动全屏播放视频, 可在长按的瞬间点右上角隐藏预览, 比较考验手速.
有不要求手速的做法: 访问如下链接, 长按任意蓝色链接, 右上角点隐藏预览即可(链接预览是系统全局的, 识别到链接是视频就会自动开始播放)
https://developer.apple.com/documentation/webkit/wkwebview/allowslinkpreview
5. 最后附上源码- ==UserScript==
- // @name 草榴视频下载
- // @match *://*/htm_mob/*.html
- // @match *://*/read.php*
- // @version 1.1
- // @description 草榴添加视频下载图标
- // @run-at document-end
- // @grant none
- // ==/UserScript==
- (function() {
- 'use strict';
- // ------------------- 视频下载图标 -------------------
- const addDownloadButton = (v, url) => {
- // 防止重复添加
- if (v.dataset.downloadAdded) return;
- if (!url || !/^https?:\/\/.*/i.test(url)) return;
- const a = document.createElement("a");
- // 直接指向视频地址
- // 保留 href,方便 iOS Safari 长按处理
- a.href = url;
- a.rel = "noopener";
- a.title = "下载视频";
- a.setAttribute("aria-label", "下载视频");
- // 禁止短按,只保留 Safari 原生长按菜单
- a.addEventListener("click", e => {
- e.preventDefault();
- });
- // Safari 风格的下载图标
- // pointer-events: none 让整个触摸区域都落在 <a> 上
- a.innerHTML = `
- <svg
- pointer-events="none"
- viewBox="0 0 24 24"
- width="20"
- height="20"
- fill="none"
- stroke="currentColor"
- stroke-width="2"
- stroke-linecap="round"
- stroke-linejoin="round"
- aria-hidden="true">
- <path d="M12 3v12"></path>
- <path d="m7 10 5 5 5-5"></path>
- <path d="M5 21h14"></path>
- </svg>
- `;
- // 下载图标放在视频下方,居中
- a.style.display = "inline-flex";
- a.style.alignItems = "center";
- a.style.justifyContent = "center";
- // 实际可点击区域稍大,但视觉上仍只有一个小图标
- a.style.width = "32px";
- a.style.height = "32px";
- // 跟随当前页面文字颜色
- a.style.color = "inherit";
- a.style.textDecoration = "none";
- // 保留 Safari 原生长按行为
- a.style.webkitTouchCallout = "default";
- a.style.userSelect = "none";
- // 图标容器
- const wrap = document.createElement("div");
- wrap.style.display = "flex";
- wrap.style.justifyContent = "center";
- wrap.style.alignItems = "center";
- wrap.style.height = "32px";
- wrap.style.margin = "0";
- wrap.appendChild(a);
- // 放在 video 下方
- if (v.parentNode) {
- v.parentNode.insertBefore(wrap, v.nextSibling);
- }
- v.dataset.downloadAdded = "1";
- };
- // ------------------- 获取视频地址 -------------------
- const getVideoURL = v => {
- const realSrc =
- v.getAttribute('data-src') ||
- v.getAttribute('src') ||
- v.currentSrc;
- if (!realSrc || realSrc.startsWith('data:')) {
- return null;
- }
- return realSrc;
- };
- // ------------------- 初始化已有视频 -------------------
- document.querySelectorAll("video").forEach(v => {
- const realSrc = getVideoURL(v);
- if (realSrc) {
- addDownloadButton(v, realSrc);
- }
- });
- // ------------------- 动态新增视频节点 -------------------
- new MutationObserver(ms => {
- ms.forEach(m => {
- m.addedNodes.forEach(n => {
- if (n.tagName === "VIDEO") {
- const realSrc = getVideoURL(n);
- if (realSrc) {
- addDownloadButton(n, realSrc);
- }
- }
- if (n.querySelectorAll) {
- n.querySelectorAll("video").forEach(v => {
- const realSrc = getVideoURL(v);
- if (realSrc) {
- addDownloadButton(v, realSrc);
- }
- });
- }
- });
- });
- }).observe(document.documentElement, {
- childList: true,
- subtree: true
- });
- })();
PS: 已有脚本扩展(比如Tampermonkey/Stay/wBlock等)或带脚本功能的第三方浏览器的大佬们,
可以直接复制源码(记得手动在首行行首加// ,不知为啥被吃掉了), 就不用操作捷径和文件了.
选Userscripts因为免费开源无内购+纯脚本(可惜不带编辑器功能).
[ 此貼由蓝莓山药重新編輯:2026-09-11 13:11 ]
赞(67)