Backspace to Go Back

Go back to the previous page using the backspace key

За да инсталирате този скрипт, трябва да имате инсталирано разширение като Tampermonkey, Greasemonkey или Violentmonkey.

За да инсталирате този скрипт, трябва да инсталирате разширение, като например Tampermonkey .

За да инсталирате този скрипт, трябва да имате инсталирано разширение като Tampermonkey или Violentmonkey.

За да инсталирате този скрипт, трябва да имате инсталирано разширение като Tampermonkey или Userscripts.

За да инсталирате скрипта, трябва да инсталирате разширение като Tampermonkey.

За да инсталирате този скрипт, трябва да имате инсталиран скриптов мениджър.

(Вече имам скриптов мениджър, искам да го инсталирам!)

За да инсталирате този стил, трябва да инсталирате разширение като Stylus.

За да инсталирате този стил, трябва да инсталирате разширение като Stylus.

За да инсталирате този стил, трябва да инсталирате разширение като Stylus.

За да инсталирате този стил, трябва да имате инсталиран мениджър на потребителски стилове.

За да инсталирате този стил, трябва да имате инсталиран мениджър на потребителски стилове.

За да инсталирате този стил, трябва да имате инсталиран мениджър на потребителски стилове.

(Вече имам инсталиран мениджър на стиловете, искам да го инсталирам!)

// ==UserScript==
// @name         Backspace to Go Back
// @namespace    gobackxFIRKx
// @description  Go back to the previous page using the backspace key
// @version      1.03
// @author       xFIRKx
// @match        *://*/*
// @grant        none
// @homepageURL  https://greasyfork.org/it/scripts/495770-backspace-to-go-back
// ==/UserScript==

(function() {
    'use strict';

    function handleKeydown(event) {
        // Check if the pressed key is the backspace key
        if ((event.key === 'Backspace' || event.keyCode === 8) && !event.defaultPrevented) {
            // Check if the focus is not on an editable element
            const activeElement = document.activeElement;
            const isInput = activeElement.tagName === 'INPUT' || activeElement.tagName === 'TEXTAREA' || activeElement.isContentEditable;
            const isReadOnly = activeElement.readOnly || activeElement.disabled;

            if (!isInput || isReadOnly) {
                event.preventDefault(); // Prevent the default action
                window.history.back(); // Go back to the previous page
            }
        }
    }

    // Add event listener for keydown events
    document.addEventListener('keydown', handleKeydown, true); // Use capture mode to ensure the event is caught early

    // Use MutationObserver to handle dynamic content changes
    const observer = new MutationObserver(() => {
        // Reattach the event listener if necessary
        document.removeEventListener('keydown', handleKeydown, true);
        document.addEventListener('keydown', handleKeydown, true);
    });

    // Observe changes in the document body
    observer.observe(document.body, { childList: true, subtree: true });

    // Additional observer for YouTube's specific dynamic content
    if (window.location.hostname.includes('youtube.com')) {
        const ytObserver = new MutationObserver(() => {
            const contentElement = document.querySelector('ytd-app');
            if (contentElement) {
                ytObserver.observe(contentElement, { childList: true, subtree: true });
            }
        });

        ytObserver.observe(document.body, { childList: true, subtree: true });
    }
})();