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

Навязчивое добавление ссылки на оригинал при копировании текста с сайта

Идея: когда пользователь выделяет часть текста и копирует её в буфер обмена (например, чтобы выложить на своём сайте), автоматически добавлять к выделению ссылку на источник.

Реализация:

[-]
View Code 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
                );
            }
        );
    }
);

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

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

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

Автор: ; опубликовано в: JavaScript; метки: JavaScript, jQuery, SEO
14
Янв
2012

RSS Комментарии к статье «Автоматическое добавление ссылки на источник при копировании текста с сайта» (16)  »

  1. hayk

    Как по мне, то это сомнительный фичер. Добропорядочный копипастер, а есть и такие, всегда поставит ссылку на источник, а тот кто этого избегает просто удалит ссылку.

  2. А я думаю, мысль верная. Иногда так копируешь для себя заметки на скорую руку, а так не нужно было бы со ссылками возится.

  3. Я обратил внимание, что news.mail.ru использует подобный код (правда, сам JavaScript я так и не нашёл — было бы интересно посмотреть).

  4. Мысль очень верная но как узнать это работает или нет, например у меня всегда крадут авторские стати и кто крадёт на индексе яндекса выше чем у меня.

  5. Вот здесь есть плагин для WordPress основанный на скрипте от Falchenko Maxim aka be3
    Работает практически замечательно.
    А как у вас с кроссбраузерностью?

  6. Подобный скрипт предлагает сервис tynt.com: подставляет ссылку, если со страницы копируется больше скольких-то слов. В комплекте идёт личный кабинет со статистикой, сколько раз с сайта копировали текст и картинки, на каких сайтах разместились сгенерённые ссылки (ага, это при условии, что копировщик их не поудалял) и даже скромная статистика запросов, по которым приходят.

  7. Владимир, а мне Ваша статья помогла бы от воровства авторских стихов на моем сайте, ссылочку бы взяла, но куда её вставлять?Что в ней надо добавить от себя? Я только учусь строить свой сайт, на нём даже не стоит свидетельство об авторском праве в подвале? Как быть в этом случае, подскажите, если не трудно?

  8. А мне пригодилось спасибо !

  9. Хороший скрипт! Последнее время начал замечать подобные на новостных сайтах или интернет-изданиях… Полезно было бы проделать и такой, чтобы генерировал ссылку-анкор в скопировано тексте. Тогда цены бы ему не было, а так…

    • Делается элементарно: magic_div.innerHTML — это скопированный контент. String.replace и регулярные выражения в помощь.

      • Немного не понял…
        Например есть текст:

        Привет мир, я тебя люблю еще сильнее и сильнее.

        Как сделать, чтобы при копировании текста с сайта, он копировался с анкором “люблю”. Т.е будет:

        Привет мир, я тебя “люблю”(слово анкор) еще сильнее и сильнее.

  10. Отличный способ борьбы с наглым копипастом.

Пожалуйста, не используйте эту форму для комментирования! Данная форма предназначена исключительно для ботов.

Оставить комментарий к записи «Автоматическое добавление ссылки на источник при копировании текста с сайта»

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Оставляя комментарий, вы выражаете своё согласие с Правилами комментирования.

Подписаться, не комментируя

गते गते पारगते पारसंगते बोधि स्वाहा