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

Все блоги / DLE движок для сайтов 30 июля 2013 0   
Задача сделать так чтоб при копировании текста (стихотворений например) добавлялась ещё и ссылка откуда копируют.
Я нашёл в интернете кучу примеров но все их можно разделить на 2 вида:

1. не работает на dle
Реализация:
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
                );
            }
        );
    }
);

Настраиваемые параметры:

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

Возможные улучшения: проверка длины копируемого текста. Например, если пользователь копирует меньше 20 слов, не добавлять ссылку. Получить выделенный текст можно через range.cloneContents().textContent.

тут нашёл


и 2. Не копирует форматирование текста. т.е. стихи перестают быть стихами.

Создать текстовой файл copyrtext.js и закидываем его в папку /engine/classes/js/ на своем ресурсе.

function addLink() {     var body_element = document.getElementsByTagName('body')[0];     var selection;     selection = window.getSelection();     var pagelink = "<br /><br  /> Источник: <a href='"+document.location.href+"'>"+document.location.href+"</a><br  />© dle9.com";     var copytext = selection + pagelink;     var newdiv = document.createElement('div');     newdiv.style.position='absolute';     newdiv.style.left='-99999px';     body_element.appendChild(newdiv);     newdiv.innerHTML = copytext;     selection.selectAllChildren(newdiv);     window.setTimeout(function() {         body_element.removeChild(newdiv);     },0);}document.oncopy = addLink;




Остается прописать его в начале страницы main.tpl между тегами

<head><script type="text/javascript" src="/engine/classes/js/copyrtext.js"></script></head>



Нужно рабочее решение. Заранее благодарен за помощь.

 Источник:dle-faq.pro, DLE

Похожие публикации

@
  • bowtiesmilelaughingblushsmileyrelaxedsmirk
    heart_eyeskissing_heartkissing_closed_eyesflushedrelievedsatisfiedgrin
    winkstuck_out_tongue_winking_eyestuck_out_tongue_closed_eyesgrinningkissingstuck_out_tonguesleeping
    worriedfrowninganguishedopen_mouthgrimacingconfusedhushed
    expressionlessunamusedsweat_smilesweatdisappointed_relievedwearypensive
    disappointedconfoundedfearfulcold_sweatperseverecrysob
    joyastonishedscreamtired_faceangryragetriumph
    sleepyyummasksunglassesdizzy_faceimpsmiling_imp
    neutral_faceno_mouthinnocent

Архив публикаций