您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Stops all videos on the page
当前为
// ==UserScript== // @name Stop all videos // @namespace Stop all videos // @version 1.1 // @description Stops all videos on the page // @author Nameniok // @match *://*/* // @license MIT // @grant none // ==/UserScript== (function() { 'use strict'; const config = { blockVideoPreload: true, // Stop video loading blockAutoplay: true, // Stop automatic playback }; function stopAndDisablePreload(video) { video.pause(); video.removeAttribute('preload'); } function stopAndDisablePreloadForAllVideos() { Array.from(document.querySelectorAll('video')).forEach(video => { stopAndDisablePreload(video); addCanPlayListener(video); applyAdditionalSettings(video); video.addEventListener('loadedmetadata', () => { stopAndDisablePreload(video); addCanPlayListener(video); applyAdditionalSettings(video); }); }); } function addCanPlayListener(video) { video.addEventListener('canplay', () => { stopAndDisablePreload(video); }, { once: true }); video.addEventListener('loadedmetadata', () => { stopAndDisablePreload(video); }, { once: true }); } function observeVideos(mutationsList) { mutationsList.forEach(mutation => { if (mutation.type === 'childList' && mutation.addedNodes.length > 0) { mutation.addedNodes.forEach(node => { if (node.tagName && node.tagName.toLowerCase() === 'video') { if (config.blockVideoPreload) { stopAndDisablePreload(node); } if (config.blockAutoplay) { addCanPlayListener(node); } applyAdditionalSettings(node); } else if (node.querySelectorAll) { Array.from(node.querySelectorAll('video')).forEach(video => { if (config.blockVideoPreload) { stopAndDisablePreload(video); } if (config.blockAutoplay) { addCanPlayListener(video); } applyAdditionalSettings(video); }); } }); } }); } function initObserver() { const observer = new MutationObserver(observeVideos); const targetNode = document.body; const observerConfig = { childList: true, subtree: true }; observer.observe(targetNode, observerConfig); } window.addEventListener('load', () => { stopAndDisablePreloadForAllVideos(); initObserver(); }); })();