Отправить заявку

Автоматическое добавление ссылки при копировании текста с сайта

Если необходимо автоматически при копировании текста с сайта копировать и ссылку на исходную страницу т.е. пользователь выделяет часть текста и копирует её в буфер обмена (например, чтобы выложить на своём сайте), автоматически добавлять к выделению ссылку на источник - то следующий код для Вас.

source_link — текст, который будет добавляться к копируемому фрагменту. В данном примере задаётся статически, но при желании генерацию ссылки можно усложнить (например, при копировании с текста с домашней страницы можно возвращать ссылку на статью, из которой взята данная цитата). Для этого в строке magic_div.append(range.cloneContents(), source_link); вместо source_link нужно использовать свою функцию, возвращающую HTML для вставки в копируемый фрагмент.
'#content div.post' — выражение, задающее один или более контейнер с текстом, при копировании которого нужно добавлять ссылку на оригинал.

var source_link = '<p>Узнать детали: <a href="' + location.href + '">' + location.href + '</a></p>';
jQuery(
    function($)
    {
        if (window.getSelection) $('#content div.post').bind(
            'copy',
            function()
            {
                var selection = window.getSelection();
                var range = selection.getRangeAt(0);

                var magic_div = $('<div>').css({ overflow : 'hidden', width: '1px', height : '1px', position : 'absolute', top: '-10000px', left : '-10000px' });
                magic_div.append(range.cloneContents(), source_link);
                $('body').append(magic_div);

                var cloned_range = range.cloneRange();
                selection.removeAllRanges();

                var new_range = document.createRange();
                new_range.selectNode(magic_div.get(0));
                selection.addRange(new_range);

                window.setTimeout(
                    function()
                    {
                        selection.removeAllRanges();
                        selection.addRange(cloned_range);
                        magic_div.remove();
                    }, 0
                );
            }
        );
    }
);
Другие публикации