Бывает так, что создав свой блог, люди начинают копировать с него информацию. Даже если в подвале сайта, или где либо ещё, информации о том, что требуется ссылка на оригинал при копировании текста с сайта, многие просто игнорируют, некоторые забывают. Появилась идея, что при выборе текста и копировании через нажатие сочетания ctrl+C или через правую кнопку мыши в буфер копирования добавлялась ссылка на страницу с которой копируют текст. Решение было найдено через небольшой клиентский скрипт. Скрипт в полной версии поста.

Итак, для начала распишем саму идею по пунктам:

 

1) Отлавливаем нажатие ctrl+c или копирование через правую кнопку мыши

2) Добавляем заранее заготовленный текст к имеющемуся буферу обмена (то место куда копируется текст, кто не знает)

3) ПРОФИТ! (PROFIT!)

 

Вроде бы по пунктам всё понятно, и кажется, что всё легко реализовать… Да в принципе так оно и есть, язык JavaScript нам позволит это сделать, так же в этой версии скрипта, которую я предлагаю, необходимо подключить библиотеку jQuery.

 

<script type="text/javascript">
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
                );
            }
        );
    }
);
</script>

 

Есть ещё такой вариант добавления ссылки на источник, он без использования библиотеки  jQuery, но на всё том же JavaScript:

 

<script type="text/javascript">
function addLink() {
    var body_element = document.getElementsByTagName('body')[0];
    var selection;
    selection = window.getSelection();
    var pagelink = "<br /><br /> Источник: <a href='"+document.location.href+"'>"+document.title+"</a><br />© ITSAC"; // В этой строке поменяйте текст на свой
    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;
</script>

 

Оба скрипта можно использовать в большинстве браузеров, по крайней мере в ФФ, Хроме, Опере и ИЕ 9 проблем не возникало. Я же использую первый вариант, но никто не мешает использовать второй, например если вы работаете с другим javascript фреймворком (например mootools и др.), чтобы не возникало конфликтов. Какие подводные камни могут возникнуть при использовании двух разных фреймворков javascript читайте на страницах моего блога в разделе разработка сайтов.

 

Есть и другие варианты скриптов, направленные именно на автоматическое добавление ссылки на источник при копировании текста с сайта. Защищайте свой контент с умом, но не забывайте, что всегда есть кнопка PrintScreen и OCR программы.

Комментарии

comments powered by Disqus