Дата поста: 21-09-2012
Бывает так, что создав свой блог, люди начинают копировать с него информацию. Даже если в подвале сайта, или где либо ещё, информации о том, что требуется ссылка на оригинал при копировании текста с сайта, многие просто игнорируют, некоторые забывают. Появилась идея, что при выборе текста и копировании через нажатие сочетания ctrl+C или через правую кнопку мыши в буфер копирования добавлялась ссылка на страницу с которой копируют текст. Решение было найдено через небольшой клиентский скрипт. Скрипт в полной версии поста.
Итак, для начала распишем саму идею по пунктам:
-
Отлавливаем нажатие ctrl+c или копирование через правую кнопку мыши
-
Добавляем заранее заготовленный текст к имеющемуся буферу обмена (то место куда копируется текст, кто не знает)
-
ПРОФИТ! (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 программы.