Copy Link and Button Text on Drag

Copia il testo di un collegamento o pulsante negli appunti quando viene trascinato leggermente

Versione datata 11/06/2024. Vedi la nuova versione l'ultima versione.

Dovrai installare un'estensione come Tampermonkey, Greasemonkey o Violentmonkey per installare questo script.

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

Dovrai installare un'estensione come Tampermonkey o Violentmonkey per installare questo script.

Dovrai installare un'estensione come Tampermonkey o Userscripts per installare questo script.

Dovrai installare un'estensione come ad esempio Tampermonkey per installare questo script.

Dovrai installare un gestore di script utente per installare questo script.

(Ho già un gestore di script utente, lasciamelo installare!)

Dovrai installare un'estensione come ad esempio Stylus per installare questo stile.

Dovrai installare un'estensione come ad esempio Stylus per installare questo stile.

Dovrai installare un'estensione come ad esempio Stylus per installare questo stile.

Dovrai installare un'estensione per la gestione degli stili utente per installare questo stile.

Dovrai installare un'estensione per la gestione degli stili utente per installare questo stile.

Dovrai installare un'estensione per la gestione degli stili utente per installare questo stile.

(Ho già un gestore di stile utente, lasciamelo installare!)

// ==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;
    });
})();