Здравствуйте.
Подскажите как обойти блокировку данного типа:
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;
}
}
// не даем выделять текст мышкой
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);
}
Хотел написать UserScript, но не знаю как :(
Если поможете написать скрипт то буду примного благодарен.
Это статья (на хабре) 2007 года!!!
Я отключаю возможность выделения текста так (через css):
user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
-o-user-select: none;
-webkit-user-select: none;
Вот ссылка на сайт, где ты можешь посмотреть совместимость с современными (и не очень) браузерами
https://caniuse.com/#search=user-select
не поддерживается только Opera Mini (вообще не знаю, что это такое - оно css почти не поддерживает)
P.S.
создай класс
.noselect {
user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
-o-user-select: none;
-webkit-user-select: none;
}
и добавляй его динамически к элементам, для которых хочешь отключить выделение текста, например
$(myelement).addClass('noselect');
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Добрый день! Передо мной стала такая задачаНужно сделать на сайте окно с бегущей строкой биржевых котировок
Доброго времени суток, сообщество! Есть вот такой вот фильтр: http://jsfiddlenet/xvs9jL1c/ Но, к сожалению, не совсем устраивает своим функционалом и у меня...
Мне надо сделать таймер обратного отсчета до 31 декабряБолее менее понимаю, каковым должен быть алгоритм: