Показать сообщение отдельно
  #10 (permalink)  
Старый 08.03.2013, 04:49
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Во всех браузерах кроме старых опер (почти всех кроме нескольких последних) есть событие oncopy. В старых операх нельзя отловить копирование из контекстного меню. По Ctr+C можно отловить через keydown (или keypress чтоли). Далее, во всех браузерах кроме Firefox есть объект clipboardData типа Clipboard. Далее, во всех этих браузерах кроме Safari 5 и и Chrome < 18 можно записывать данные в этот объект. Впрочем и без clipboardData достаточно изменить выделение и в буфер попадет именно оно.

<div id="nocopy">Попробуй меня скопировать. А затем проверь что в буфере</div>
<textarea></textarea>
<script>
    var target = document.getElementById('nocopy');
    target.oncopy = function(event) {
        var clipboardData = (event || window.event).clipboardData;
        if (clipboardData) {
            clipboardData.setData('Text', 'Все права защищены!');
        } else {
            alert('Clipboard API не поддерживается! Тут workaround\'им');
        }
        return false;
    }
</script>


Кстати, не проще ли просто запрещать выделение больших кусков текста?

Но думаю все эти антиплагиаты ничего не стоят. В хроме например javascript на странице отключается в три клика:
Ответить с цитированием