.:. 草榴社區 » 技術討論區 » iOS Safari修复播放纯音频时控制条消失的技巧
--> 本頁主題: iOS Safari修复播放纯音频时控制条消失的技巧 字體大小 寬屏顯示 只看樓主 最新點評 熱門評論 時間順序
蓝莓山药


級別:新手上路 ( 8 )
發帖:377
威望:99 點
金錢:5642 USD
貢獻:0 點
註冊:2026-02-24


iOS Safari修复播放纯音频时控制条消失的技巧



大家用iOS浏览器播放站里的纯音频文件控制条会直接消失吧, 貌似没聚聚提过这个问题唉, 下面用油猴脚本来修复Safari音频播放器控制条消失的问题

在上次的基础上加: 引用 7418999:(更新)iOS Safari下载视频教程

依然需要三个app, 快捷指令换成了Fileso, 它最近刚好在限免, 如何白嫖可参考: 引用 7504325:[iOS内购限免]Fileso:多功能文件管理, 速领! 11 月 14 日 08:00截止

今天主要讲如何操作Fileso, 操作Userscipts 可参考上面的下载视频教程帖

上期是通过快捷指令把js文件写入Userscipts目录, 有了Fileso之后就方便多了, 可以直接在Fileso里操作.js文件.




1. 打开Fileso app, 点右下角+号, 挂载文件夹



选择Userscripts的主目录, 点右上角打开



这样便挂载成功了



挂载之后就可以直接在Fileso里操作js文件了, 不用每次去自带文件app里找文件




2. 点进挂载的文件夹, 点右下角+号, 新建文件



输入文件名的名字随意, 后缀必须是.js, 创建






3. 点开刚新建的js文件, 复制粘贴如下代码, 手动在第一行==UserScript==前加//, 保存

複製代碼
  1. ==UserScript==
  2. // @name        草榴视频下载+音频修复
  3. // @match        *://*/htm_mob/*.html
  4. // @match        *://*/read.php*
  5. // @version      1.2
  6. // @description  草榴添加视频下载图标, 修复音频播放器
  7. // @run-at      document-end
  8. // @grant        none
  9. // ==/UserScript==
  10. (function() {
  11. 'use strict';
  12. // ------------------- 纯音频播放器修复 -------------------
  13. function convertAudioVideo(v) {
  14.     const sources = [
  15.         v.getAttribute('data-src'),
  16.         v.getAttribute('src')
  17.     ].filter(Boolean);
  18.     const audioSrc = sources.find(src =>
  19.         /\.(?:mp3|wav|ogg|aac|flac|m4a)(?:[?#]|$)/i.test(src)
  20.     );
  21.     if (!audioSrc) return false;
  22.     const audio = document.createElement('audio');
  23.     audio.src = audioSrc;
  24.     audio.controls = true;
  25.     audio.preload = v.getAttribute('preload') || 'none';
  26.     audio.loop = v.hasAttribute('loop');
  27.     audio.style.cssText = 'width:100%;max-width:100%';
  28.     v.replaceWith(audio);
  29.     return audio;
  30. }
  31. // ------------------- 视频下载图标 -------------------
  32. const addDownloadButton = (v, url) => {
  33.     // 防止重复添加
  34.     if (v.dataset.downloadAdded) return;
  35.     if (!url || !/^https?:\/\/.*/i.test(url)) return;
  36.     const a = document.createElement("a");
  37.     // 直接指向视频地址
  38.     // 保留 href,方便 iOS Safari 长按处理
  39.     a.href = url;
  40.     a.rel = "noopener";
  41.     a.title = "下载视频";
  42.     a.setAttribute("aria-label", "下载视频");
  43.     // 禁止短按,只保留 Safari 原生长按菜单
  44.     a.addEventListener("click", e => {
  45.         e.preventDefault();
  46.     });
  47.     // Safari 风格的下载图标
  48.     // pointer-events: none 让整个触摸区域都落在 <a> 上
  49.     a.innerHTML = `
  50.         <svg
  51.             pointer-events="none"
  52.             viewBox="0 0 24 24"
  53.             width="20"
  54.             height="20"
  55.             fill="none"
  56.             stroke="currentColor"
  57.             stroke-width="2"
  58.             stroke-linecap="round"
  59.             stroke-linejoin="round"
  60.             aria-hidden="true">
  61.             <path d="M12 3v12"></path>
  62.             <path d="m7 10 5 5 5-5"></path>
  63.             <path d="M5 21h14"></path>
  64.         </svg>
  65.     `;
  66.     // 下载图标放在播放器下方,居中
  67.     a.style.display = "inline-flex";
  68.     a.style.alignItems = "center";
  69.     a.style.justifyContent = "center";
  70.     // 实际可点击区域稍大,但视觉上仍只有一个小图标
  71.     a.style.width = "32px";
  72.     a.style.height = "32px";
  73.     // 跟随当前页面文字颜色
  74.     a.style.color = "inherit";
  75.     a.style.textDecoration = "none";
  76.     // 保留 Safari 原生长按行为
  77.     a.style.webkitTouchCallout = "default";
  78.     a.style.userSelect = "none";
  79.     // 图标容器
  80.     const wrap = document.createElement("div");
  81.     wrap.style.display = "flex";
  82.     wrap.style.justifyContent = "center";
  83.     wrap.style.alignItems = "center";
  84.     wrap.style.height = "32px";
  85.     wrap.style.margin = "0";
  86.     wrap.appendChild(a);
  87.     // 放在播放器下方
  88.     if (v.parentNode) {
  89.         v.parentNode.insertBefore(wrap, v.nextSibling);
  90.     }
  91.     v.dataset.downloadAdded = "1";
  92. };
  93. // ------------------- 获取视频地址 -------------------
  94. const getVideoURL = v => {
  95.     const realSrc =
  96.         v.getAttribute('data-src') ||
  97.         v.getAttribute('src') ||
  98.         v.currentSrc;
  99.     if (!realSrc || realSrc.startsWith('data:')) {
  100.         return null;
  101.     }
  102.     return realSrc;
  103. };
  104. // ------------------- 统一处理视频和音频 -------------------
  105. const processVideo = v => {
  106.     // 先尝试转换音频
  107.     const audio = convertAudioVideo(v);
  108.     if (audio) {
  109.         addDownloadButton(audio, audio.src);
  110.         return;
  111.     }
  112.     // 普通视频添加下载图标
  113.     const realSrc = getVideoURL(v);
  114.     if (realSrc) {
  115.         addDownloadButton(v, realSrc);
  116.     }
  117. };
  118. // ------------------- 初始化已有视频 -------------------
  119. document.querySelectorAll("video").forEach(processVideo);
  120. // ------------------- 动态新增视频节点 -------------------
  121. new MutationObserver(ms => {
  122.     ms.forEach(m => {
  123.         m.addedNodes.forEach(n => {
  124.             if (n.tagName === "VIDEO") {
  125.                 processVideo(n);
  126.             }
  127.             if (n.querySelectorAll) {
  128.                 n.querySelectorAll("video").forEach(processVideo);
  129.             }
  130.         });
  131.     });
  132. }).observe(document.documentElement, {
  133.     childList: true,
  134.     subtree: true
  135. });
  136. })();
複製代碼







4. 访问 引用 7505732:分享一个漂流瓶认识的少妇和她老公的录音(17.06.04)⑥

看下页面底部的音频播放器控制条是否变了, 没变的话去扩展里看下是否有这条js: 草榴视频下载+音频修复



赞(2)
DMCA / ABUSE REPORT | TOP Posted: 11-12 19:58 樓主 引用 | 發表評論
闲过信陵饮


級別:新手上路 ( 8 )
發帖:392
威望:40 點
金錢:1910 USD
貢獻:0 點
註冊:2018-05-02


Fileso 挂载 Userscripts 目录这一步写得最清楚,iOS 上油猴脚本能这么用,纯音频转 audio 播放器这个思路确实省事。
TOP Posted: 11-12 20:10 #1樓 引用 | 點評
雲慕雨


級別:俠客 ( 9 )
發帖:1499
威望:289 點
金錢:13459 USD
貢獻:0 點
註冊:2024-12-12

感谢分享技术
TOP Posted: 11-12 20:24 #2樓 引用 | 點評
Sasuk1e


級別:新手上路 ( 8 )
發帖:127
威望:13 點
金錢:655 USD
貢獻:0 點
註冊:2026-10-07

感谢分享
TOP Posted: 11-12 20:32 #3樓 引用 | 點評
mhtmxy


級別:精靈王 ( 12 )
發帖:5394
威望:1534 點
金錢:62933508 USD
貢獻:0 點
註冊:2014-10-11

感谢分享
TOP Posted: 11-12 20:39 #4樓 引用 | 點評
史泰龙Stallone


級別:騎士 ( 10 )
發帖:2589
威望:590 點
金錢:20018 USD
貢獻:333 點
註冊:2025-07-14

感谢分享
TOP Posted: 11-12 21:03 #5樓 引用 | 點評
吻你


級別:俠客 ( 9 )
發帖:1360
威望:137 點
金錢:2717 USD
貢獻:0 點
註冊:2026-03-09

谢谢分享
TOP Posted: 11-12 21:06 #6樓 引用 | 點評
苏筱熙


級別:天使 ( 14 )
發帖:174044
威望:73478 點
金錢:27340 USD
貢獻:69 點
註冊:2012-09-01

感谢分享
TOP Posted: 11-12 22:15 #7樓 引用 | 點評
蒹葭草


級別:精靈王 ( 12 )
發帖:1559
威望:159 點
金錢:751 USD
貢獻:78300 點
註冊:2014-05-12

感謝分享,學到不少
TOP Posted: 11-12 22:16 #8樓 引用 | 點評

.:. 草榴社區 -> 技術討論區

快速回帖 頂端
內容:
HTML 代碼不可用

使用簽名
Wind Code自動轉換

按 Ctrl+Enter 直接提交
今夜想约点开这