Disable hh.ru skill testing protection

Выключает обнаружение копирования и переключение вкладок на hh.ru, позволяя использовать любые ресурсы во время прохождения тестов на подтверждение навыков.

// ==UserScript==
// @name         Disable hh.ru skill testing protection
// @namespace    mailto:[email protected]
// @version      1.0
// @description  Выключает обнаружение копирования и переключение вкладок на hh.ru, позволяя использовать любые ресурсы во время прохождения тестов на подтверждение навыков.
// @author       eat-the-rich
// @license      MIT
// @match        *://*.hh.ru/*
// @run-at       document-start
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    // Store the original addEventListener function
    const originalAddEventListener = EventTarget.prototype.addEventListener;
    const blockedEvents = ['copy', 'visibilitychange', 'webkitvisibilitychange', 'blur'];

    // Override the addEventListener function
    EventTarget.prototype.addEventListener = function(type, listener, options) {
        // Check if the event type is in our blocked list
        if (!blockedEvents.includes(type.toLowerCase())) {
            return originalAddEventListener.call(this, type, listener, options);
        }
    };

    // Sourced from: https://stackoverflow.com/questions/47660653/chrome-extension-how-to-disable-page-visibility-api
    // for some reason event listener override is not sufficient
    for (const eventName of blockedEvents) {
        window.addEventListener(eventName, function(event) {
            event.stopImmediatePropagation();
        }, true);
    }
})();