您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Convert all MP4 text links in the page to video elements.
// ==UserScript== // @name Convert MP4 Text Links to Video // @namespace http://tampermonkey.net/ // @version 1.0 // @description Convert all MP4 text links in the page to video elements. // @author Eddie // @match https://sehuatang.org/* // @grant none // @license MIT // ==/UserScript== (function() { 'use strict'; // 定义正则表达式以匹配以.mp4结尾的URL const mp4Regex = /https?:\/\/[^\s]+?\.mp4/g; function replaceTextWithVideo(element) { element.childNodes.forEach((node) => { if (node.nodeType === Node.TEXT_NODE) { const matches = []; let match; while (match = mp4Regex.exec(node.nodeValue)) { matches.push(match); } if (matches.length > 0) { const fragment = document.createDocumentFragment(); let lastIndex = 0; matches.forEach((match) => { const index = match.index; const matchText = match[0]; // 添加前置文本(如果有) if (index > lastIndex) { fragment.appendChild(document.createTextNode(node.nodeValue.slice(lastIndex, index))); } // 创建并配置一个新的video元素 const videoElement = document.createElement('video'); videoElement.src = matchText; videoElement.controls = true; videoElement.style.maxWidth = '100%'; videoElement.style.height = 'auto'; fragment.appendChild(videoElement); lastIndex = index + matchText.length; }); // 添加剩余文本(如果有) if (lastIndex < node.nodeValue.length) { fragment.appendChild(document.createTextNode(node.nodeValue.slice(lastIndex))); } // 替换原始节点 node.parentNode.replaceChild(fragment, node); } } else if (node.nodeType === Node.ELEMENT_NODE) { // 递归处理子元素 replaceTextWithVideo(node); } }); } // 从文档根节点开始替换文本链接 replaceTextWithVideo(document.body); })();