Missav keeps playing

Let videos keeps playing after losing focus

  1. // ==UserScript==
  2. // @name Missav keeps playing
  3. // @namespace http://tampermonkey.net/
  4. // @version 2025-01-31
  5. // @description Let videos keeps playing after losing focus
  6. // @author zqi
  7. // @match https://missav.ai/*
  8. // @icon https://www.google.com/s2/favicons?sz=64&domain=missav.ai
  9. // @grant none
  10. // @license MIT
  11.  
  12. // ==/UserScript==
  13.  
  14. (function() {
  15. 'use strict';
  16.  
  17. document.addEventListener('DOMContentLoaded', () => {
  18. console.log('[Debug] DOM loaded');
  19. initPlayerObserver();
  20. });
  21.  
  22. function initPlayerObserver() {
  23. const observer = new MutationObserver(() => {
  24. if (window.player?.pause) {
  25. console.log('[Debug] Player detected');
  26. overridePause();
  27. observer.disconnect();
  28. }
  29. });
  30.  
  31. observer.observe(document.body, { childList: true, subtree: true });
  32. if (window.player) overridePause();
  33. }
  34.  
  35. function overridePause() {
  36. try {
  37. const originalPause = window.player.pause.bind(window.player);
  38. Object.defineProperty(window.player, 'pause', {
  39. value: function() {
  40. console.log('[Debug] Pause called. Focus:', document.hasFocus());
  41. if (document.hasFocus()) originalPause();
  42. },
  43. writable: false,
  44. configurable: false
  45. });
  46. console.log('[Debug] Pause overridden');
  47. } catch (e) {
  48. console.error('[Debug] Override error:', e);
  49. }
  50. }
  51.  
  52. setInterval(() => {
  53. if (!window.player?.pause?.toString().includes('Focus:')) {
  54. console.log('[Debug] Pause was reset! Re-overriding...');
  55. overridePause();
  56. }
  57. }, 2000);
  58. })();