четверг, 29 ноября 2012 г.

Запрещаем выделять текст на странице

Данный способ запрещает выделение текста на странице и не препятствует индексации контента.
На примере сайта на WordPress.


1. Создаем файл "script_15.js". Содержание файла:


function preventSelection(element){
var preventSelection = false;

function addHandler(element, event, handler){
if (element.attachEvent) 
element.attachEvent('on' + event, handler);
else 
if (element.addEventListener) 
element.addEventListener(event, handler, false);
}

function removeSelection(){
if (window.getSelection) { window.getSelection().removeAllRanges(); }
else if (document.selection && document.selection.clear)
document.selection.clear();
}

function killCtrlA(event){
var event = event || window.event;
var sender = event.target || event.srcElement;
if (sender.tagName.match(/INPUT|TEXTAREA/i))
return;
var key = event.keyCode || event.which;
if (event.ctrlKey && key == 'A'.charCodeAt(0))  // 'A'.charCodeAt(0) можно заменить на 65
{
removeSelection();
if (event.preventDefault) 
event.preventDefault();
else
event.returnValue = false;
}
}

function killCtrlC(event){
var event = event || window.event;
var sender = event.target || event.srcElement;
if (sender.tagName.match(/INPUT|TEXTAREA/i))
return;
var key = event.keyCode || event.which;
if (event.ctrlKey && key == 'C'.charCodeAt(0))  // 'A'.charCodeAt(0) можно заменить на 65
{
removeSelection();
if (event.preventDefault) 
event.preventDefault();
else
event.returnValue = false;
}
}

// не даем выделять текст мышкой
addHandler(element, 'mousemove', function(){
if(preventSelection)
removeSelection();
});
addHandler(element, 'mousedown', function(event){
var event = event || window.event;
var sender = event.target || event.srcElement;
preventSelection = !sender.tagName.match(/INPUT|TEXTAREA/i);
});

// борем dblclick
// если вешать функцию не на событие dblclick, можно избежать
// временное выделение текста в некоторых браузерах
addHandler(element, 'mouseup', function(){
if (preventSelection)
removeSelection();
preventSelection = false;
});

// борем ctrl+A
// скорей всего это и не надо, к тому же есть подозрение
// что в случае все же такой необходимости функцию нужно 
// вешать один раз и на document, а не на элемент
addHandler(element, 'keydown', killCtrlA);
addHandler(element, 'keyup', killCtrlA);
addHandler(element, 'keydown', killCtrlC);
addHandler(element, 'keyup', killCtrlC);
}

2. Сохраняем. Закачиваем в папку темы со скриптами.

3. В файле header.php прописываем путь к скрипту:
<script type="text/javascript" src="<?php bloginfo('stylesheet_directory'); ?>/js/script_15.js"></script>

 4. Вызываем скрипт в блоке <body>

<script type="text/javascript">
preventSelection(document);
</script> 

Источник

Комментариев нет:

Отправить комментарий