只允许当前标签页播放视频,其他全部暂停,并保持全屏状态
// ==UserScript==
// @name B站 & YouTube 仅激活标签播放并保持全屏
// @namespace http://tampermonkey.net/
// @version 0.2
// @description 只允许当前标签页播放视频,其他全部暂停,并保持全屏状态
// @match https://www.bilibili.com/video/*
// @match https://www.youtube.com/watch*
// @grant window.close
// ==/UserScript==
(function() {
'use strict';
let wasFullscreen = false;
// 检查当前标签是否全屏
function checkFullscreen() {
const video = document.querySelector('video');
if (video && document.fullscreenElement) {
wasFullscreen = true;
} else {
wasFullscreen = false;
}
}
function setPlaybackState() {
const video = document.querySelector('video');
if (!video) return;
if (document.visibilityState === 'visible') {
if (video.paused) {
console.log('标签页激活,恢复播放');
video.play().catch(() => {});
if (wasFullscreen) {
console.log('上一个视频全屏,设置为全屏');
video.requestFullscreen().catch(() => {});
}
}
} else {
if (!video.paused) {
console.log('标签页非激活,暂停播放');
video.pause();
}
}
}
function onVideoEnded() {
console.log('视频播放完毕,关闭标签页');
window.close();
window.open('', '_self').close();
}
function setup() {
const video = document.querySelector('video');
if (video) {
console.log('检测到视频元素');
video.addEventListener('ended', onVideoEnded);
document.addEventListener('visibilitychange', setPlaybackState);
checkFullscreen(); // 检查是否全屏
setPlaybackState(); // 初始化判断一次
} else {
setTimeout(setup, 1000);
}
}
setup();
})();