Копіювання контенту з адресою першоджерела

2419

Перекладаючи в Гуглі текст, який я зкопіював з одного сайту, примітив, що до тексту автоматично додалась адреса сторінки. Дещо здивований таким фактом, я все ж оцінив корисність даної фічі, коли є потреба хоч трохи захищати свій контент від копіпастерів. Від професійних плагіаторників, звичайно, нічого не спасе – лише скарги. Але часто тексти цитують на інших сайтах і форумах звичайні користувачі, без злого задуму. І, думаю, цілком ввічливо з боку автора буде допомогти їм вставити адресу на першоджерело інформації. Виявляється, це питання можна просто і елегантно вирішити.

Перебираючи в Інтернеті статті про захист текстів на сторінці, я частіше стикався або з повною забороною копіювання (це ідіотизм), або з надто екзотичними способами захисту, які вимагають додаткових зусиль чи матеріальних витрат. І найсмішніше, що такі інструкції самі десятки разів перевкрадені і зкопіпащені на багатьох сайтах навіть без зазначення джерела.

Нарешті я знайшов, що шукав. Скрипт працює на бібліотеці jQuery, яка вже й так підвантажується у більшості тем Вордпресу. Тому вам доведеться лише вставити в <header> скрипт:


<script type="text/javascript">
jQuery.fn.addtocopy = function (usercopytxt) {
 var options = { htmlcopytxt: '<br>More: <a href="' + window.location.href + '">' + window.location.href + '</a><br>', minlen: 25, addcopyfirst: false }
 jQuery.extend(options, usercopytxt); 
 var copy_sp = document.createElement('span');
 copy_sp.id = 'ctrlcopy';
 copy_sp.innerHTML = options.htmlcopytxt;
 return this.each(function () {
 jQuery(this).mousedown(function () { jQuery('#ctrlcopy').remove(); });
 jQuery(this).mouseup(function () {
 if (window.getSelection) { //good times 
 var slcted = window.getSelection();
 var seltxt = slcted.toString();
 if (!seltxt || seltxt.length < options.minlen) return;
 var nslct = slcted.getRangeAt(0);
 seltxt = nslct.cloneRange();
 seltxt.collapse(options.addcopyfirst);
 seltxt.insertNode(copy_sp);
 if (!options.addcopyfirst) nslct.setEndAfter(copy_sp);
 slcted.removeAllRanges();
 slcted.addRange(nslct);
 } else if (document.selection) { //bad times
 var slcted = document.selection;
 var nslct = slcted.createRange();
 var seltxt = nslct.text;
 if (!seltxt || seltxt.length < options.minlen) return;
 seltxt = nslct.duplicate();
 seltxt.collapse(options.addcopyfirst);
 seltxt.pasteHTML(copy_sp.outerHTML);
 if (!options.addcopyfirst) { nslct.setEndPoint("EndToEnd", seltxt); nslct.select(); }
 }
 });
 });
}
jQuery(function () { 
 jQuery("#content").addtocopy(
 { 
 htmlcopytxt: '<br>Детальніше: <a href="' + window.location.href + '">' + window.location.href + '</a>', minlen: 50, addcopyfirst: false
 } 
 ); 
 });
</script>
<style type="text/css" media="all">
#ctrlcopy { 
 color:transparent;
 height:1px;
 overflow:hidden;
 position:absolute;
 width:1px;

}
</style>

Замість “Детальніше” можна вписати інший текст.

1 коментар

НАПИСАТИ ВІДПОВІДЬ

Please enter your comment!
Впишіть своє ім'я