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

Ответить
Аватара пользователя
Distructor
Администратор
Сообщения: 1606
Зарегистрирован: 28.12.2009
На практике мне часто приходится применять данный функционал. Но чаще не из-за того что бы запретить выделение для копипастеров, тем более что данная фича легко обходится просто выключив на время javascript. А чаще в проектах где приходится крутить слайдеры, кастомные скролы, drag&drop. Т.к. здесь активно участвуют события нажатия и перетаскивание, которые также выделяют текст на сайте… хотя это не требовалось. Поэтому я часто пользуюсь данными функциями…

Код: Выделить всё

jQuery.fn.extend({ 
    disableSelection : function() { 
            this.each(function() { 
                    this.onselectstart = function() { return false; }; // IE, Chrome, Safari
                    this.unselectable = "on"; // IE, Opera
                    jQuery(this).css('-moz-user-select', 'none'); // FF
            }); 
    },
    enableSelection : function() { 
            this.each(function() { 
                    this.onselectstart = function() {}; 
                    this.unselectable = "off"; 
                    jQuery(this).css('-moz-user-select', 'auto'); 
            }); 
    } 
});

// кроссбраузерный вызов
$(document).ready(function(){
    $('body *').disableSelection(); 
}); 
$('body *') – именно такой селектор будет для этих методов кроссбраузерным, $('body') или $(document) – не работает в Opera.
disableSelection – запрет выделения
enableSelection – возврат выделения

Ничего нового я в этой статье не открыл, а просто хотел поделится функциями с вами, т.к. до определенного момента вечно искал что-то подобное в инете.

Источник http://markup-javascript.com/2010/05/14 ... yu-jquery/

Ответить