油猴脚本开发


查找所有视频元素

js
const videos = document.querySelectorAll('video'); //查找所有视频元素
// 遍历视频
videos.forEach(video => {
    // 这里写视频逻辑
});

查找单个视频元素
const video = document.querySelector("video");

假设找到视频元素后并赋值给了video变量,并操作视频:

js
video.muted = true; // 静音
// 开始播放
video.play().then(() => {
	console.log('视频播放成功');
}).catch(error => {
	console.error('视频播放失败:', error.message);
});

// 监听视频播暂停
video.addEventListener('pause', function() {
	console.log('视频播放完毕,请编写下一步操作');
});

// 监听视频播结束
video.addEventListener('ended', function() {
	console.log('视频播放完毕,请编写下一步操作');
});

屏蔽视频播放的切换检测

js
// 下面是屏蔽网页的后台播放检测代码
    // 拦截和修改 document.hidden 和 document.visibilityState
    Object.defineProperty(document, 'hidden', {
        configurable: true,
        get: function() {
            return false;
        }
    });

    Object.defineProperty(document, 'visibilityState', {
        configurable: true,
        get: function() {
            return 'visible';
        }
    });

    // 拦截和修改 document.addEventListener
    const originalAddEventListener = document.addEventListener;
    document.addEventListener = function(type, listener, options) {
        if (type === 'visibilitychange' || type === 'blur') {
            console.log(`拦截事件: ${type}`);
            return;
        }
        return originalAddEventListener.call(document, type, listener, options);
    };

    // 拦截和修改 window.addEventListener
    const originalWindowAddEventListener = window.addEventListener;
    window.addEventListener = function(type, listener, options) {
        if (type === 'blur') {
            console.log(`拦截事件: ${type}`);
            return;
        }
        return originalWindowAddEventListener.call(window, type, listener, options);
    };
    // 屏蔽网页的后台播放检测代码结束