MediaWiki:Common.js: Difference between revisions

From RVM Wiki
Jump to navigation Jump to search
Created page with "Any JavaScript here will be loaded for all users on every page load.: $(function () { Adds copy button Chatgp: function addCopyButton(pre) { if ($(pre).data('copyButtonAdded')) return; $(pre).data('copyButtonAdded', true); var $pre = $(pre).closest('.mw-highlight, pre').first(); var target = $(pre).text(); var $wrapper = $pre.parent(); $wrapper.css('position', 'relative'); var $btn = $('<button>')..."
 
No edit summary
Line 2: Line 2:


$(function () {
$(function () {
/* Adds copy button Chatgp */
    function addCopyButton(pre) {
        if ($(pre).data('copyButtonAdded')) return;
        $(pre).data('copyButtonAdded', true);


        var $pre = $(pre).closest('.mw-highlight, pre').first();
    console.log("Copy button script loaded");
        var target = $(pre).text();


         var $wrapper = $pre.parent();
    function addButton(pre) {
         $wrapper.css('position', 'relative');
         if (pre.dataset.copyBtn) return;
         pre.dataset.copyBtn = "1";


         var $btn = $('<button>')
         const btn = document.createElement("button");
            .text('???? Copia')
        btn.innerText = "???? Copia";
            .css({
                position: 'absolute',
                top: '6px',
                right: '6px',
                fontSize: '12px',
                cursor: 'pointer',
                zIndex: 1000
            })
            .on('click', async function () {
                try {
                    await navigator.clipboard.writeText(target);
                    $btn.text('✔ Copiato');
                    setTimeout(() => $btn.text('???? Copia'), 1500);
                } catch (e) {
                    console.error(e);
                    alert('Errore copia');
                }
            });


         $wrapper.append($btn);
         btn.style.position = "absolute";
        btn.style.top = "4px";
        btn.style.right = "4px";
        btn.style.zIndex = "9999";
        btn.style.fontSize = "12px";
        btn.style.cursor = "pointer";
 
        const wrapper = pre.parentElement;
        if (getComputedStyle(wrapper).position === "static") {
            wrapper.style.position = "relative";
        }
 
        btn.addEventListener("click", async () => {
            try {
                await navigator.clipboard.writeText(pre.innerText);
                btn.innerText = "✔ Copiato";
                setTimeout(() => btn.innerText = "???? Copia", 1200);
            } catch (e) {
                console.error(e);
                alert("Clipboard non disponibile");
            }
        });
 
        wrapper.appendChild(btn);
     }
     }


     // pre normali
     function scan() {
    $('pre').each(function () {
         document.querySelectorAll("pre").forEach(addButton);
         addCopyButton(this);
     }
     });


    scan();
});
});

Revision as of 09:54, 2 July 2026

/* Any JavaScript here will be loaded for all users on every page load. */

$(function () {

    console.log("Copy button script loaded");

    function addButton(pre) {
        if (pre.dataset.copyBtn) return;
        pre.dataset.copyBtn = "1";

        const btn = document.createElement("button");
        btn.innerText = "???? Copia";

        btn.style.position = "absolute";
        btn.style.top = "4px";
        btn.style.right = "4px";
        btn.style.zIndex = "9999";
        btn.style.fontSize = "12px";
        btn.style.cursor = "pointer";

        const wrapper = pre.parentElement;
        if (getComputedStyle(wrapper).position === "static") {
            wrapper.style.position = "relative";
        }

        btn.addEventListener("click", async () => {
            try {
                await navigator.clipboard.writeText(pre.innerText);
                btn.innerText = "✔ Copiato";
                setTimeout(() => btn.innerText = "???? Copia", 1200);
            } catch (e) {
                console.error(e);
                alert("Clipboard non disponibile");
            }
        });

        wrapper.appendChild(btn);
    }

    function scan() {
        document.querySelectorAll("pre").forEach(addButton);
    }

    scan();
});