您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Allow Facebook Stories to play in the background
当前为
// ==UserScript== // @name Facebook Stories Background Playback // @namespace http://tampermonkey.net/ // @version 1.1 // @description Allow Facebook Stories to play in the background // @author HaiDang // @match https://*.facebook.com/* // @icon https://www.google.com/s2/favicons?sz=64&domain=facebook.com // @grant none // @run-at document-start // ==/UserScript== (function () { 'use strict'; const config = { debug: false, storySelector: '[role="article"] video', checkInterval: 1000, }; const logger = { log: (message) => { if (config.debug) { console.log(`[FB Stories Background] ${message}`); } }, }; let isTabActive = true; const handleEvent = (evt) => { if (evt.type === 'visibilitychange') { isTabActive = !document.hidden; logger.log(`Tab active: ${isTabActive}`); if (!isTabActive) { ensureStoryPlaying(); } } else { if (!isTabActive) { logger.log(`${evt.type} event intercepted`); evt.stopImmediatePropagation(); } } }; const ensureStoryPlaying = () => { if (isTabActive) return; // Không làm gì khi tab đang active const videos = document.querySelectorAll(config.storySelector); videos.forEach((video) => { if (video.paused) { video.play().catch((err) => logger.log(`Play failed: ${err.message}`)); } }); }; const initEventListeners = () => { window.addEventListener('visibilitychange', handleEvent, { capture: true, passive: false, }); }; const init = () => { logger.log('Initializing script'); initEventListeners(); setInterval(ensureStoryPlaying, config.checkInterval); }; init(); })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址