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

Завсегдатаи некоторых новостных порталов, возможно, уже встретились с этой новой фичей, которая придумана для того, чтобы народ не забывал ставить активные ссылки на первоисточник. Вы копируете текст статьи в буфер обмена, но при вставке текста получаете «в нагрузку» к ценному контенту ссылочку на статью в конце скопированного фрагмента.

Скажу сразу, меня эта скриптина бесит. Далеко не всегда текст копируется для того, чтобы его потом перепостить куда-то. Достало постоянное вырезание «довесков». Однако увеличивать ссылочную массу, надо полагать, помогает. Посему содрала скриптик с одного такого портала и делюсь им со всеми желающими (может, и себе такой поставлю на своем сайте 😛 , откуда статьи воруют все, кому не лень).

Сам скрипт (сохраняем в отдельном файле .js)

// подстановка копирайта при копировании в буфер обмена
var div4copy;
var pagelink = "\r\n<p>Подробнее: <a href=’"+document.location.href+"’>"+document.location.href+"</a></p>";

function create_div4copy() {
var newdiv = document.createElement(‘DIV’);
document.body.appendChild(newdiv);
newdiv.style.overflow="hidden";
newdiv.style.width="1px";
newdiv.style.height="1px";
newdiv.style.position="absolute";
newdiv.style.top="-999px";
newdiv.style.left="-999px";
newdiv.innerHTML=»;
return newdiv;
}
function clipboard_addLink() {
if (!window.getSelection) return;
var selection = window.getSelection();
var range = selection.getRangeAt(0);

div4copy=create_div4copy()
div4copy.appendChild (range.cloneContents());
range3=range.cloneRange();
selection.removeAllRanges();

div4copy.innerHTML+= pagelink;
var range2 = document.createRange();
range2.selectNode(div4copy);
selection.addRange(range2);

window.setTimeout( function() {
selection.removeAllRanges();
selection.addRange(range3);
document.body.removeChild(div4copy);
}, 0);
}

// определяем элементы которым повесим обработчик события
a=document.getElementsByTagName("DIV");
c=a.length;
for (i=0; i<c; i++) {
if (a[i].className==’Announce’ || a[i].className.indexOf("ImportantData")>-1) {
if (a[i].attachEvent) {
a[i].attachEvent("oncopy", clipboard_addLink);
} else if(a[i].addEventListener) {
a[i].addEventListener("copy", clipboard_addLink, false);
}
}
}

В данном случае защищены div’ы Announce и ImportantData. Можно по образцу добавить в список другие слои, содержимое которых не хотите отдавать без активной ссылки.

После всех этих div’ов подключаем скрипт:

<script type="text/javascript" src="ссылка на .js-файл"></script>

 

И тестируем:


Этот текст защищен от наглого копипаста. Кто его скопирует, будет гореть в геенне огненной во веки веков.


Похожие записи:

Понравилась статья? Расскажите друзьям!

9 Комментариев для “Скрипт подстановки копирайта при копипасте текста”

    1. Во всех остальных браузерах — Мозилле и Хроме 😀
      Собснно, я ни в IE, ни в Опере не сижу никогда, вот и не проверяла.
      Однако, спасибо тебе все же! Теперь знаю, как избавиться от этой заразы — то есть, в каких браузерах открывать!
      Чмок-чмок разработчикам, у которых голова не болит по поводу кросс-браузерности! 😀

    2. В новых версиях Opera — пашет. Отпишитесь, может, и в IE уже работает? У меня версия 8-ая, очень древняя…

  1. Весь инет облазил…. решения так и не нашел, чтобы во всех браузерах работало:)

  2. в Фаерфоксе 40.0.3 (последнем на данный момент) не работает.
    в Опере 12.15 (последней версии на движке Престо) не работает.

  3. Скрипт со страницы вставляет «прибавку» только когда копируем только этот «защищенный» блок. Если вместе с этим «защищенным» блоком прихватить сточечаку сверху и снихзу от блока — ничегошеньки он не вставит. Ну и зачем такой скрипт? 🙂

Добавить комментарий

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