Copy Link and Button Text on Drag

Copy the text of a link or button to the clipboard when dragged slightly

当前为 2024-06-11 提交的版本,查看 最新版本

您需要先安装一个扩展,例如 篡改猴Greasemonkey暴力猴,之后才能安装此脚本。

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

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴Userscripts ,之后才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。

您需要先安装用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name           Copy Link and Button Text on Drag
// @description    Copy the text of a link or button to the clipboard when dragged slightly
// @description:de Kopiere den Text eines Links oder Buttons in die Zwischenablage, wenn er leicht gezogen wird
// @description:ru Копировать текст ссылки или кнопки в буфер обмена при небольшом перетаскивании
// @description:uk Скопіювати текст посилання або кнопки в буфер обміну при невеликому перетягуванні
// @description:zh 在轻微拖动时将链接或按钮文本复制到剪贴板
// @description:ja リンクやボタンを少しドラッグすると、テキストをクリップボードにコピーします
// @description:nl Kopieer de tekst van een link of knop naar het klembord wanneer deze licht wordt gesleept
// @description:pt Copiar o texto de um link ou botão para a área de transferência quando arrastado ligeiramente
// @description:es Copiar el texto de un enlace o botón al portapapeles cuando se arrastra ligeramente
// @description:it Copia il testo di un collegamento o pulsante negli appunti quando viene trascinato leggermente
// @description:ar نسخ نص الرابط أو الزر إلى الحافظة عند سحبه قليلاً
// @description:fr Copier le texte d'un lien ou d'un bouton dans le presse-papiers lorsqu'il est légèrement glissé
// @description:pl Skopiuj tekst linku lub przycisku do schowka po lekkim przeciągnięciu
// @description:hi लिंक या बटन के टेक्स्ट को थोड़ा खींचने पर क्लिपबोर्ड पर कॉपी करें
// @description:bn লিঙ্ক বা বোতামের পাঠ্য সামান্য টেনে ক্লিপবোর্ডে কপি করুন
// @description:ko 링크나 버튼을 약간 드래그하면 텍스트를 클립보드에 복사합니다
// @description:vi Sao chép văn bản của liên kết hoặc nút vào bảng tạm khi kéo nhẹ
// @description:tr Bir bağlantının veya düğmenin metnini hafifçe sürüklediğinizde panoya kopyalayın
// @description:th คัดลอกข้อความของลิงก์หรือปุ่มไปยังคลิปบอร์ดเมื่อถูกลากเบา ๆ
// @icon           https://ide.onl/img/script/copylinkdrag.png
// @namespace      https://ide.onl/scripts/30-kopirovanie-teksta-ssylok-s-pomoschju-tampermonkey.html
// @version        1.2
// @match          *://*/*
// @grant          none
// @author         Sitego
// @license        MIT
// ==/UserScript==

(function() {
    'use strict';

    let startX, startY, dragging = false, targetElement = null;

    document.addEventListener('mousedown', function(event) {
        if (event.target.tagName.toLowerCase() === 'a' || event.target.tagName.toLowerCase() === 'button') {
            startX = event.clientX;
            startY = event.clientY;
            dragging = true;
            targetElement = event.target;
        }
    });

    document.addEventListener('mousemove', function(event) {
        if (dragging) {
            const distance = Math.sqrt(Math.pow(event.clientX - startX, 2) + Math.pow(event.clientY - startY, 2));
            if (distance > 5) { // Consider it a drag if moved more than 5 pixels
                if (targetElement) {
                    const elementText = targetElement.textContent.trim();
                    navigator.clipboard.writeText(elementText).then(() => {
                        console.log('Text copied to clipboard:', elementText);
                    }).catch(err => {
                        console.error('Could not copy text: ', err);
                    });
                    dragging = false;
                    targetElement = null;
                }
            }
        }
    });

    document.addEventListener('mouseup', function() {
        dragging = false;
        targetElement = null;
    });

    document.addEventListener('mouseleave', function() {
        dragging = false;
        targetElement = null;
    });
})();