Skip to content

Instantly share code, notes, and snippets.

@bes-internal
Last active August 29, 2015 14:21
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save bes-internal/63e82299a6f609ff4577 to your computer and use it in GitHub Desktop.
Save bes-internal/63e82299a6f609ff4577 to your computer and use it in GitHub Desktop.
вставляем ссылку на страницу при копировании (no jquery)
<script defer>
function nsaddlink() {
//только для тех кто умеет копировать
if (typeof window.getSelection == "undefined") return;
var selection = window.getSelection(),
newdiv = document.createElement('div'),
newa = document.createElement('a');
//скрываем служебный блок и ссылку в скопированном тексте
newa.style.position=newdiv.style.position = 'absolute';
newdiv.style.left=newa.style.left='-9999px';
//ссылка на текущую страницу и анкор (можно и без анкора, но если вставляется как текст то ссылка как бы сохраняется)
newa.href=document.location.href;
newa.innerHTML=" "+document.location.href;
// не добавляем копирайт к коротким выделениям, 120 символов выведено имирическим путем
if (selection.getRangeAt(0).cloneContents().textContent.length<120) {return}
//вставляем скопированный текст и ссылку в служебный блок и делаем новое выделение, которое пользователь и копируем в буфер
newdiv.appendChild(selection.getRangeAt(0).cloneContents());
newdiv.appendChild(newa);
document.body.appendChild(newdiv);
selection.selectAllChildren(newdiv);
//удляем служебный блок через некоторое время после копирования
window.setTimeout(function(){document.body.removeChild(newdiv);}, 200);
}
//синхронно (перед закрывающимся body) вешаем наш скрипт на событие копирования
document.addEventListener('copy', nsaddlink);
<\/script>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment