Anti Focus Detection

Prevent focus/visibility detection

// ==UserScript==
// @name         Anti Focus Detection
// @namespace    http://tampermonkey.net/
// @version      1.0
// @description  Prevent focus/visibility detection
// @match        *://*/*
// @grant        none
// @license MIT
// ==/UserScript==

(function() {
    'use strict';

    Object.defineProperty(document, 'hidden', {
        get: () => false
    });

    Object.defineProperty(document, 'visibilityState', {
        get: () => 'visible'
    });

    const eventsToBlock = ['visibilitychange', 'blur', 'focus', 'focusin', 'focusout'];

    eventsToBlock.forEach(eventType => {
        window.addEventListener(eventType, e => e.stopImmediatePropagation(), true);
    });

    const originalAddEventListener = EventTarget.prototype.addEventListener;

    EventTarget.prototype.addEventListener = function(eventType, listener, options) {
        if (eventsToBlock.includes(eventType)) {
            return;
        }
        originalAddEventListener.call(this, eventType, listener, options);
    };

})();