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

Аватара пользователя
Distructor
Администратор
Сообщения: 1631
Зарегистрирован: 28 дек 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/

Вернуться в «jQuery»