Hexadecimal Decoder

Decodes selected hexadecimal text and shows an alert with the decoded text

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

You will need to install an extension such as Tampermonkey to install this script.

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

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

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

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

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

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

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

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

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

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

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

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

// ==UserScript==
// @name         Hexadecimal Decoder
// @namespace    http://tampermonkey.net/
// @version      1.0
// @description  Decodes selected hexadecimal text and shows an alert with the decoded text
// @author       enDoctore
// @license      CC BY 4.0
// @match        *://*/*
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    // Variable to store the selected hexadecimal text
    let selectedHex = '';

    // Listen for the context menu event
    document.addEventListener('contextmenu', function(event) {
        // Get the selected text
        selectedHex = window.getSelection().toString().trim();

        // Check if the selected text is hexadecimal
        if (isHexadecimal(selectedHex)) {
            // Create a custom context menu item
            const menuItem = document.createElement('div');
            menuItem.innerText = 'Decode Hexadecimal';
            menuItem.style.position = 'absolute';
            menuItem.style.backgroundColor = '#fff';
            menuItem.style.border = '1px solid #ccc';
            menuItem.style.padding = '5px';
            menuItem.style.zIndex = '1000';
            document.body.appendChild(menuItem);

            // Position the menu item
            menuItem.style.left = `${event.pageX}px`;
            menuItem.style.top = `${event.pageY}px`;

            // Add click event to the menu item
            menuItem.addEventListener('click', function() {
                const decodedText = hexToString(selectedHex);
                alert(`${decodedText}`);
                menuItem.remove(); // Remove the menu item after use
            });

            // Remove the menu item when clicking elsewhere
            document.addEventListener('click', function() {
                menuItem.remove();
            }, { once: true });
        }
    });

    function isHexadecimal(str) {
        return /^[0-9A-Fa-f]+$/.test(str);
    }

    function hexToString(hex) {
        let str = '';
        for (let i = 0; i < hex.length; i += 2) {
            str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));
        }
        return str;
    }
})();