可以弄一个Tampermonkey脚本选中文本调用动作

经验创意 · 206 次浏览
困困君 创建于 22天13小时前

// ==UserScript==
// @name         选中文本快捷启动Quicker动作Translator
// @namespace    http://tampermonkey.net/
// @version      0.5
// @description  在选中文本的右下角显示一个图标,点击图标启动Quicker动作
// @match        *://*/*
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    // 创建图标元素
    const icon = document.createElement('img');
    icon.src = 'data:image/jpeg;base64,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'; // 使用Base64编码的图标
    icon.style.position = 'absolute';
    icon.style.width = '24px';
    icon.style.height = '24px';
    icon.style.cursor = 'pointer';
    icon.style.display = 'none'; // 初始隐藏
    icon.style.zIndex = '9999'; // 确保图标在最上层
    document.body.appendChild(icon);

    // 监听文本选中事件
    document.addEventListener('mouseup', function() {
        const selectedText = window.getSelection().toString().trim();

        if (selectedText) {
            // 获取选中文本的位置
            const range = window.getSelection().getRangeAt(0);
            const rect = range.getBoundingClientRect();

            // 设置图标位置
            icon.style.left = `${rect.right + window.scrollX +5}px`; // 向左偏移图标宽度
            icon.style.top = `${rect.bottom + window.scrollY +5}px`;
            icon.style.display = 'block';

            // 点击图标时启动Quicker动作:Translator
            icon.onclick = function() {
                const quickerActionUrl = `quicker:runaction:04393db9-f4bc-4871-7fb6-08db2506d1ed`;
                window.location.href = quickerActionUrl; // 启动Quicker动作
            };
        } else {
            // 没有选中文本时隐藏图标
            icon.style.display = 'none';
        }
    });

    // 监听页面滚动和窗口大小变化,调整图标位置
    window.addEventListener('scroll', updateIconPosition);
    window.addEventListener('resize', updateIconPosition);

    function updateIconPosition() {
        const selectedText = window.getSelection().toString().trim();
        if (selectedText) {
            const range = window.getSelection().getRangeAt(0);
            const rect = range.getBoundingClientRect();
            icon.style.left = `${rect.right + window.scrollX +5}px`;
            icon.style.top = `${rect.bottom + window.scrollY +5}px`;
        }
    }
})();

困困君 最后更新于 2025/1/28

回复内容
zryan 20天16小时前
#1

感谢大佬分享!🌹这个脚本很赞👍

给你加星标

zryan 最后更新于 20天15小时前
H-D-G 7天19小时前
#2
const quickerActionUrl = `quicker:runaction:04393db9-f4bc-4871-7fb6-08db2506d1ed`;

可以把ID改成动作库ID,这样就不用让使用者再编辑脚本了
H-D-G 7天18小时前
#3
贴一下个人修改后自用版本:

// ==UserScript==
// @name         选中文本快捷启动Quicker动作Translator
// @namespace    http://tampermonkey.net/
// @author       困困君&HDG
// @version      1.0
// @description  在选中文本的鼠标右下角显示一个图标,点击图标启动Quicker动作
// @match        *://*/*
// @grant        none
// ==/UserScript==


(function() {
    'use strict';


    // 创建图标元素
    const icon = document.createElement('img');
    icon.src = 'https://files.getquicker.net/_icons/D4101A1D55C2E0833FC40AE2F03239394D5A210C.png';
    icon.style.position = 'absolute';
    icon.style.width = '16px';
    icon.style.height = '16px';
    icon.style.cursor = 'pointer';
    icon.style.display = 'none'; // 初始隐藏
    icon.style.zIndex = '9999'; // 确保图标在最上层
    icon.style.opacity = 0; // 初始透明度
    document.body.appendChild(icon);


    // 动画效果:淡入
    function fadeIn() {
        let op = 0; // 初始透明度
        icon.style.opacity = 0;
        let timer = setInterval(function () {
            if (op >= 1) {
                clearInterval(timer);
            }
            icon.style.opacity = op;
            op += 0.1;
        }, 10);
    }


    // 动画效果:淡出
    function fadeOut() {
        let op = 1; // 初始透明度
        let timer = setInterval(function () {
            if (op <= 0.1) {
                clearInterval(timer);
                icon.style.display = 'none';
            }
            icon.style.opacity = op;
            op -= 0.1;
        }, 10);
    }


    // 监听文本选中事件
    document.addEventListener('mouseup', function(e) {
        const selectedText = window.getSelection().toString().trim();


        if (selectedText) {
            fadeIn(); // 显示图标并淡入
            // 获取鼠标位置
            const mousePos = {
                x: e.clientX + window.scrollX,
                y: e.clientY + window.scrollY
            };


            // 设置图标位置在鼠标右下方
            icon.style.left = `${mousePos.x + 15}px`;
            icon.style.top = `${mousePos.y + 15}px`;
            icon.style.display = 'block';


            // 点击图标时启动Quicker动作:Translator
            icon.onclick = function() {
                const quickerActionUrl = `quicker:runaction:04393db9-f4bc-4871-7fb6-08db2506d1ed`;
                window.location.href = quickerActionUrl; // 启动Quicker动作
                fadeOut(); // 淡出图标
            };
        } else {
            fadeOut(); // 没有选中文本时淡出图标
        }
    });
})();
回复主贴