Ссылка при копировании текста с сайта

Искал код, который бы позволял вставлять ссылку при копировании текста.

Код я нашел на нескольких сайтах, но все они имели важную проблему - при копировании большого куска текста, он копировался одним сплошным куском - без разбивания на абзацы.

Пришлось покопаться, но в итоге собрал код, который при копировании сохраняет разметку текста по абзацам:

<script>

function addLink() {

        //Get the selected text and append the extra info

        var selection = window.getSelection(),

            pagelink = '<br /><br /> Read more at: ' + document.location.href,

            copytext = selection + pagelink,

            newdiv = document.createElement('div');


        //hide the newly created container

        newdiv.style.position = 'absolute';

        newdiv.style.left = '-99999px';


        //insert the container, fill it with the extended text, and define the new selection

        document.body.appendChild(newdiv);

        newdiv.innerHTML = copytext;

        selection.selectAllChildren(newdiv);


        window.setTimeout(function () {

            document.body.removeChild(newdiv);

        }, 100);

    }


    document.addEventListener('copy', (event) => {

    const pagelink = `\n\nRead more at: ${document.location.href}`;

    event.clipboardData.setData('text', document.getSelection() + pagelink);

    event.preventDefault();

});


</script>


В коде можно заменить "Read more at:" на любой нужный вам текст. Обратите внимание, что в коде эта часть повторяется 2 раза.


Комментарии