Automatically pauses videos in background tabs and resumes when tab is active
// ==UserScript==
// @name Auto Pause/Resume Background Videos
// @namespace kio
// @version 1.2
// @description Automatically pauses videos in background tabs and resumes when tab is active
// @author Kio
// @match *://*/*
// @grant none
// @run-at document-start
// ==/UserScript==
(function() {
'use strict';
const videos = new Set();
function handleVideo(video) {
if (videos.has(video)) return;
videos.add(video);
Object.defineProperty(video, 'isplaying', {
get: function(){
return !!(this.currentTime > 0 && !this.paused && !this.ended && this.readyState > 2);
}
});
// Pause if tab not visible
if (document.hidden && video.isplaying) video.pause();
// Listen to tab visibility changes
document.addEventListener('visibilitychange', () => {
if (document.hidden) {
if (video.isplaying) video.pause();
} else {
// Resume when tab active
if (!video.isplaying && video.readyState > 2) {
video.play().catch(()=>{}); // catch error if autoplay blocked
}
}
});
}
// Observe new video elements dynamically
const observer = new MutationObserver((mutations) => {
mutations.forEach(m => {
m.addedNodes.forEach(node => {
if (node.tagName === 'VIDEO') handleVideo(node);
else if (node.querySelectorAll) {
node.querySelectorAll('video').forEach(v => handleVideo(v));
}
});
});
});
observer.observe(document, { childList: true, subtree: true });
// Handle existing videos
document.querySelectorAll('video').forEach(v => handleVideo(v));
})();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址