Facebook Stories Background Playback

Allow Facebook Stories to play in the background

当前为 2025-01-10 提交的版本,查看 最新版本

// ==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或关注我们的公众号极客氢云获取最新地址