Hexadecimal Decoder

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

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

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

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 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;
    }
})();