ABX的简单文本复制

copy everything!

// ==UserScript==
// @name         ABX的简单文本复制
// @namespace    http://tampermonkey.net/
// @version      2024-10-10
// @description  copy everything!
// @author       ABX
// @match        *://*/*
// @grant        none
// @license      MIT
// ==/UserScript==

(function() {
    'use strict';
   // 创建一个气泡元素
    const tooltip = document.createElement('div');
    tooltip.id = 'copy-tooltip';
    tooltip.style.position = 'absolute';
    tooltip.style.visibility = 'hidden';
    tooltip.style.backgroundColor = '#333'; //背景颜色
    tooltip.style.color = '#fff'; //文字颜色
    tooltip.style.padding = '5px';
    tooltip.style.borderRadius = '5px';
    tooltip.style.fontSize = '12px';
    tooltip.style.zIndex = '1000';
    tooltip.style.opacity = '0.7'; // 设置透明度为0.7
    document.body.appendChild(tooltip);

    // 为文档添加右键点击事件监听器
    document.addEventListener('contextmenu', function(event) {
        const targetElement = event.target;
        let disTime = 1500; // 初始消失时间(毫秒)


        // 检查元素是否包含文本
        if (targetElement && targetElement.textContent) {
            const textToCopy = targetElement.textContent.trim();

            // 创建一个用于复制的临时元素
            const tempInput = document.createElement('input');
            tempInput.style.position = 'absolute';
            tempInput.style.left = '-9999px';
            tempInput.value = textToCopy;
            document.body.appendChild(tempInput);

            // 选中文本并复制
            tempInput.select();
            tempInput.setSelectionRange(0, 99999);
            document.execCommand('copy');

            // 移除临时元素
            document.body.removeChild(tempInput);

            // 显示气泡提示
            tooltip.textContent = 'ABX的简单复制: \n' + textToCopy;
            tooltip.style.visibility = 'visible';
            tooltip.style.top = `${event.pageY + 15}px`;
            tooltip.style.left = `${event.pageX + 15}px`;

            // 隐藏气泡提示
            setTimeout(() => {
                tooltip.style.visibility = 'hidden';
            }, disTime);
        }
    });
})();