Форум dkLab и Denwer
Здесь общаются Web-разработчики.
Генеральный спонсор:
Хостинг «Джино»

Запрет выделения текста и изображений на javascript (Юрий Насретдинов)
Goto page 1, 2  Next
Author Message
Юрий Насретдинов
Модератор



Joined: 13 Mar 2003
Posts: 8642
Карма: 198
   поощрить/наказать

Location: 007 495

PostPosted: Wed May 18, 2005 12:35 am (написано за 1 минуту 11 секунд)
   Post subject: Запрет выделения текста и изображений на javascript
Reply with quote

Как можно организовать САБЖ? Необходимо запретить браузеру выделять любые элементы на странице, или же, по крайней мере, после выделения сразу же его сбрасывать. Я знаю, что это можно сделать, но ничего похожего на то, что мне нужно, к сожалению, в google не нашёл...
Back to top
View user's profile Send private message Send e-mail
amikhailov
Участник форума



Joined: 11 Nov 2004
Posts: 180
Карма: 4
   поощрить/наказать

Location: Екатеринбург

PostPosted: Wed May 18, 2005 9:07 am (спустя 8 часов 32 минуты; написано за 29 секунд)
   Post subject:
Reply with quote

<body onSelectStart = "return false;">
Back to top
View user's profile Send private message
Vasich
Участник форума



Joined: 02 Dec 2004
Posts: 96
Карма: 5
   поощрить/наказать

Location: СПб

PostPosted: Wed May 18, 2005 12:12 pm (спустя 3 часа 4 минуты; написано за 32 секунды)
   Post subject:
Reply with quote

Но в Опере это не работает.
Back to top
View user's profile Send private message
WingedFox
Профессионал



Joined: 29 Apr 2003
Posts: 4064
Карма: 268
   поощрить/наказать

Location: Питер

PostPosted: Wed May 18, 2005 1:00 pm (спустя 48 минут; написано за 1 минуту 40 секунд)
   Post subject:
Reply with quote

Для IE:
Code (JavaScript): скопировать код в буфер обмена
onselectstart = function() {return false}
Для Мозиллы:
Code (JavaScript): скопировать код в буфер обмена
onmousedown = function(e) {return false}
Для Оперы решения я пока не нашел.
Back to top
View user's profile Send private message
Юрий Насретдинов
Модератор



Joined: 13 Mar 2003
Posts: 8642
Карма: 198
   поощрить/наказать

Location: 007 495

PostPosted: Wed May 18, 2005 9:09 pm (спустя 8 часов 8 минут; написано за 1 минуту 46 секунд)
   Post subject:
Reply with quote

amikhailov
WingedFox
Спасибо, как раз то, что нужно. [+]

P.S. В очередной раз убеждаюсь в том, какой же опера убогий браузер ;). Отмена контекстного меню не работает вообще, body заканчивается посередине окна, отменять выделение нельзя, многострочные тайтлы тоже не поддерживаются...
Back to top
View user's profile Send private message Send e-mail
Ant
Сотрудник «Лаборатории»



Joined: 17 Jun 2003
Posts: 6840
Карма: 131
   поощрить/наказать


PostPosted: Thu May 19, 2005 11:36 am (спустя 14 часов 26 минут)
   Post subject:
Reply with quote


М

Ветка выделена в отдельную тему «Оффтоп.»,
расположенную в форуме Мусоропровод (19 Мая 2005, 12:36).
Back to top
View user's profile Send private message Send e-mail
Ant
Сотрудник «Лаборатории»



Joined: 17 Jun 2003
Posts: 6840
Карма: 131
   поощрить/наказать


PostPosted: Thu May 19, 2005 11:37 am (спустя 1 минуту 24 секунды)
   Post subject:
Reply with quote


М

Перенесено из форума: Разное :: JavaScript.
Перенесено в форум: Склад готовых решений :: JavaScript.
Back to top
View user's profile Send private message Send e-mail
Navigator
Участник форума



Joined: 27 Nov 2004
Posts: 221
Карма: -12
   поощрить/наказать

Location: Павловский Посад

PostPosted: Sat May 21, 2005 1:28 pm (спустя 2 дня 1 час 51 минуту; написано за 35 секунд)
   Post subject:
Reply with quote

WingedFox wrote:
Для Оперы решения я пока не нашел.
а если… ммм… очень сомневаюсь:
Code (JavaScript): скопировать код в буфер обмена
document.onmousemove = function(){reutrn false};
?
Back to top
View user's profile Send private message
Евгений Галашин
Модератор



Joined: 29 Dec 2003
Posts: 1861
Карма: 32
   поощрить/наказать


PostPosted: Sat May 21, 2005 1:45 pm (спустя 16 минут; написано за 17 секунд)
   Post subject:
Reply with quote

Navigator, а что нам говорит эксперимент?
Back to top
View user's profile Send private message
Navigator
Участник форума



Joined: 27 Nov 2004
Posts: 221
Карма: -12
   поощрить/наказать

Location: Павловский Посад

PostPosted: Sat May 21, 2005 2:49 pm (спустя 1 час 3 минуты; написано за 20 секунд)
   Post subject:
Reply with quote

Евгений Галашин wrote:
Navigator, а что нам говорит эксперимент?
то, что мне дали минус =(
Back to top
View user's profile Send private message
Ant
Сотрудник «Лаборатории»



Joined: 17 Jun 2003
Posts: 6840
Карма: 131
   поощрить/наказать


PostPosted: Sun May 22, 2005 11:20 pm (спустя 1 день 8 часов 30 минут; написано за 15 секунд)
   Post subject:
Reply with quote


М

Давайте без флуда.
Back to top
View user's profile Send private message Send e-mail
WingedFox
Профессионал



Joined: 29 Apr 2003
Posts: 4064
Карма: 268
   поощрить/наказать

Location: Питер

PostPosted: Sat May 28, 2005 3:05 pm (спустя 5 дней 15 часов 44 минуты; написано за 7 минут 38 секунд)
   Post subject:
Reply with quote

Уря!
Я нашел способ обломать Оперу. Хотя, он отлично действует на все браузеры =)
Технология следующая:
Любой браузер сбрасывает выделение, когда выполняется событие focus();

Из этого следует такой код:
Code (JavaScript): скопировать код в буфер обмена
var el = document.createElement('INPUT');
el.style.width = 0;
el.style.height = 0;
el.style.border = 0;
el.style.margin = 0;
el.style.padding = 0;
el.id = '123_UnIqUe_Id_321';
el.disabled = true;
document.appendChild(el);
После чего в нужном месте вызываем
Code (JavaScript): скопировать код в буфер обмена
var el = document.getElementById('123_UnIqUe_Id_321');
try {el.focus()}
catch(e) {}
Вуаля! Опера ничего не выделяет 8*)

Констукция try ... catch нужна для IE, который матерится на focus() для поля с disabled=true.
Если же убрать disabled=true, тогда материться будет FF, причём его отшибка не отливливается.
Back to top
View user's profile Send private message
Юрий Насретдинов
Модератор



Joined: 13 Mar 2003
Posts: 8642
Карма: 198
   поощрить/наказать

Location: 007 495

PostPosted: Sat May 28, 2005 3:12 pm (спустя 7 минут; написано за 9 секунд)
   Post subject:
Reply with quote

WingedFox wrote:
в нужном месте
А вот как это нужное место определить :))?
Back to top
View user's profile Send private message Send e-mail
WingedFox
Профессионал



Joined: 29 Apr 2003
Posts: 4064
Карма: 268
   поощрить/наказать

Location: Питер

PostPosted: Sat May 28, 2005 3:14 pm (спустя 1 минуту 52 секунды; написано за 1 минуту 7 секунд)
   Post subject:
Reply with quote

Юpий Насрeтдинов
Головой, наверное 8*)

Я, например, это нужное место определил в обработчик onmousemove. =8-D
Back to top
View user's profile Send private message
Юрий Насретдинов
Модератор



Joined: 13 Mar 2003
Posts: 8642
Карма: 198
   поощрить/наказать

Location: 007 495

PostPosted: Sun May 29, 2005 3:19 pm (спустя 1 день 5 минут; написано за 9 секунд)
   Post subject:
Reply with quote

WingedFox
А как насчёт производительности такого решения ;)?
Back to top
View user's profile Send private message Send e-mail
WingedFox
Профессионал



Joined: 29 Apr 2003
Posts: 4064
Карма: 268
   поощрить/наказать

Location: Питер

PostPosted: Sun May 29, 2005 3:22 pm (спустя 2 минуты; написано за 1 минуту 33 секунды)
   Post subject:
Reply with quote

Юpий Насрeтдинов
Я пока тормозов не видел.
Там же узел создаётся всего один раз.

Кроме того, я не тестировал - может быть достаточно только на onmousedown сделать фокус на поле и браузеры перестанут выделять текст.

Есть простор для творчества =)
Back to top
View user's profile Send private message
Юрий Насретдинов
Модератор



Joined: 13 Mar 2003
Posts: 8642
Карма: 198
   поощрить/наказать

Location: 007 495

PostPosted: Sun May 29, 2005 3:26 pm (спустя 4 минуты; написано за 39 секунд)
   Post subject:
Reply with quote

WingedFox
Ясно :). Ну, будем пробовать... Хотя, честно говоря, я готов пожертвовать совместимостью с оперой, но не делать таким кривым способом отмену выделения :)
Back to top
View user's profile Send private message Send e-mail
WingedFox
Профессионал



Joined: 29 Apr 2003
Posts: 4064
Карма: 268
   поощрить/наказать

Location: Питер

PostPosted: Sun May 29, 2005 4:13 pm (спустя 47 минут; написано за 44 секунды)
   Post subject:
Reply with quote

Юpий Насрeтдинов
Главное - оно работает
И иногда очень и очень полезно.
Например - дико раздражает, когда что-то выделяется параллельно с Drag'n'Drop.
Back to top
View user's profile Send private message
Юрий Насретдинов
Модератор



Joined: 13 Mar 2003
Posts: 8642
Карма: 198
   поощрить/наказать

Location: 007 495

PostPosted: Mon May 30, 2005 3:21 pm (спустя 23 часа 7 минут; написано за 33 секунды)
   Post subject:
Reply with quote

WingedFox wrote:
Например - дико раздражает, когда что-то выделяется параллельно с Drag'n'Drop.
...Или когда что-то выделяется, когда делается обработчик на JavaScript, который сам выделяет нужные элементы, а не те, которые хочет выделить браузер.
Back to top
View user's profile Send private message Send e-mail
WingedFox
Профессионал



Joined: 29 Apr 2003
Posts: 4064
Карма: 268
   поощрить/наказать

Location: Питер

PostPosted: Mon May 30, 2005 3:30 pm (спустя 8 минут; написано за 46 секунд)
   Post subject:
Reply with quote

Юpий Насрeтдинов
А это уже - как запрограммируешь =)
Инструмент надо применять правильно и в нужном месте.
Back to top
View user's profile Send private message
Юрий Насретдинов
Модератор



Joined: 13 Mar 2003
Posts: 8642
Карма: 198
   поощрить/наказать

Location: 007 495

PostPosted: Mon May 30, 2005 3:32 pm (спустя 2 минуты; написано за 8 секунд)
   Post subject:
Reply with quote

WingedFox wrote:
А это уже - как запрограммируешь =)
Ну, в Firefox и не выделяется... А в остальных...
Back to top
View user's profile Send private message Send e-mail
WingedFox
Профессионал



Joined: 29 Apr 2003
Posts: 4064
Карма: 268
   поощрить/наказать

Location: Питер

PostPosted: Mon May 30, 2005 3:33 pm (спустя 1 минуту 7 секунд; написано за 13 секунд)
   Post subject:
Reply with quote

Юpий Насрeтдинов
И что в остальных? =)
Back to top
View user's profile Send private message
Юрий Насретдинов
Модератор



Joined: 13 Mar 2003
Posts: 8642
Карма: 198
   поощрить/наказать

Location: 007 495

PostPosted: Mon May 30, 2005 3:36 pm (спустя 3 минуты; написано за 46 секунд)
   Post subject:
Reply with quote

WingedFox
А в остальных... как бы это помягче выразиться :))). Ну в остальных выделяется и то и другое, что совершенно недопустимо, и к тому же, очень плохо с точки зрения производительности
Back to top
View user's profile Send private message Send e-mail
WingedFox
Профессионал



Joined: 29 Apr 2003
Posts: 4064
Карма: 268
   поощрить/наказать

Location: Питер

PostPosted: Mon May 30, 2005 3:38 pm (спустя 2 минуты; написано за 1 минуту)
   Post subject:
Reply with quote

Юpий Насрeтдинов
Этот приём используется у меня в Drag'n'Drop библиотеке.
Ничего лишнего не выделяется и тормозов нет.
Back to top
View user's profile Send private message
WingedFox
Профессионал



Joined: 29 Apr 2003
Posts: 4064
Карма: 268
   поощрить/наказать

Location: Питер

PostPosted: Mon May 30, 2005 4:51 pm (спустя 1 час 12 минут; написано за 1 минуту 14 секунд)
   Post subject:
Reply with quote

IE опять впереди планеты всей.
Его лечит:
Code (JavaScript): скопировать код в буфер обмена
try {el.focus();} catch(e) {el.disabled=false; el.focus(); el.disabled=true}
Back to top
View user's profile Send private message
AKS
Участник форума



Joined: 28 Dec 2005
Posts: 1174
Карма: 102
   поощрить/наказать


PostPosted: Sat Apr 08, 2006 7:38 pm (спустя 10 месяцев 9 дней 2 часа 46 минут; написано за 21 секунду)
   Post subject:
Reply with quote

WingedFox
Скажите, могу ли я использовать Вашу замечательную идею запрета выделения в своих целях(до такого самому низачто не додуматься)?
Back to top
View user's profile Send private message Send e-mail
WingedFox
Профессионал



Joined: 29 Apr 2003
Posts: 4064
Карма: 268
   поощрить/наказать

Location: Питер

PostPosted: Sat Apr 08, 2006 8:56 pm (спустя 1 час 18 минут; написано за 2 минуты 3 секунды)
   Post subject:
Reply with quote

AKS
Пожалуйста.
Но
1. такой подход не работает в Опере 8.x Выделение не убирается.
2. в IE надо перемещать поле под курсор, иначе будет прыгать страница - там автоматически срабатывает scrollIntoView.

В общем, проще всего Вам будет выдрать скрипт отсюда: forum.dklab.ru/viewtopic.php?p=107575#107575
Back to top
View user's profile Send private message
AKS
Участник форума



Joined: 28 Dec 2005
Posts: 1174
Карма: 102
   поощрить/наказать


PostPosted: Sat Apr 08, 2006 9:22 pm (спустя 25 минут; написано за 1 минуту 36 секунд)
   Post subject:
Reply with quote

WingedFox
Спасибо!
1. В Opera 8.х главное не выделяется drag'овый объект и его родитель - и это уже здорово.
2. В IE вообще, там где мне нужно, все замечательно!
Так что и выдирать ничего не нужно, если еще учитывать, что ddi.plugin.fixNoMouseSelect я еще не осознал целиком и полностью...
Back to top
View user's profile Send private message Send e-mail
WingedFox
Профессионал



Joined: 29 Apr 2003
Posts: 4064
Карма: 268
   поощрить/наказать

Location: Питер

PostPosted: Sat Apr 08, 2006 9:28 pm (спустя 6 минут; написано за 1 минуту 48 секунд)
   Post subject:
Reply with quote

AKS
Пожалуйста 8*)

Только мне теперь совсем не понятно, что именно Вам нужно....
На мой взгляд есть 2 варианта:
1. Вы используете DDI, но там этот плагин включен по-умолчанию
2. Вы не используете DDI, тогда.... нужно выдирать код из плагина
Вообще ничего не понимаю 8*)
Back to top
View user's profile Send private message
AKS
Участник форума



Joined: 28 Dec 2005
Posts: 1174
Карма: 102
   поощрить/наказать


PostPosted: Sat Apr 08, 2006 9:40 pm (спустя 12 минут; написано за 44 секунды)
   Post subject:
Reply with quote

WingedFox
Я использовал лишь Вашу идею, предложенную в данном топике 28 Мая 2005, 17:05 (фокусирование на input'е). Но в Вашем ddi.plugin.fixNoMouseSelect придется покопаться, т.к. там, оказывается, все работает четко, а у меня, если очень постараться, в Opera 8.х все же выделяется и drag'овый объектик. Да, что же там еще такого хитрого?...
Back to top
View user's profile Send private message Send e-mail
WingedFox
Профессионал



Joined: 29 Apr 2003
Posts: 4064
Карма: 268
   поощрить/наказать

Location: Питер

PostPosted: Mon Apr 10, 2006 7:43 pm (спустя 1 день 22 часа 2 минуты; написано за 1 минуту 28 секунд)
   Post subject:
Reply with quote

AKS
Можно даже не сильно стараться.
У меня с этим плагином поятоянно выделяется текст в 8й Опере.
Если дойдут руки её поставить, надо будет проверить что она делает, если сбивать фокус во время таскания мыша с нажатой кнопкой.
Back to top
View user's profile Send private message
AKS
Участник форума



Joined: 28 Dec 2005
Posts: 1174
Карма: 102
   поощрить/наказать


PostPosted: Mon Apr 10, 2006 8:27 pm (спустя 44 минуты; написано за 2 минуты 26 секунд)
   Post subject:
Reply with quote

WingedFox
Что значит - выделяется в 8й Опере? Взять, к примеру, файл window.html - ничего там у Вас не выделяется, когда таскаешь элементы по экрану! Смотрю на Ваш ddi.plugin.fixNoMouseSelect и не пойму, благодаря чему... Сначала подумал, из-за того, что input бегает за курсором, сделал также - ничего подобного. Вроде бы больше ничего и нет, короче - хитро там как-то получается.
Back to top
View user's profile Send private message Send e-mail
WingedFox
Профессионал



Joined: 29 Apr 2003
Posts: 4064
Карма: 268
   поощрить/наказать

Location: Питер

PostPosted: Mon Apr 10, 2006 8:35 pm (спустя 7 минут; написано за 1 минуту 55 секунд)
   Post subject:
Reply with quote

В demo.html (где элементы списка таскать можно) - постоянно выделяется текст. 8*)

Кстати, а почему бы Вам просто не взять DDI как есть и не городить огород с ещё одним драг-дропом?
Таких скриптов итак уже штук 20-30. 8*)
Back to top
View user's profile Send private message
AKS
Участник форума



Joined: 28 Dec 2005
Posts: 1174
Карма: 102
   поощрить/наказать


PostPosted: Tue Apr 11, 2006 6:05 am (спустя 9 часов 30 минут; написано за 4 минуты 11 секунд)
   Post subject:
Reply with quote

WingedFox
Вот ведь как бывает - у Вас выделяется, а у меня в Ваших примерах не выделяется, хоть убей (речь, есст. о Opera 8). Ну да ладно.
У меня не какой-нибудь там серьезный проект, чтобы использовать Ваши сценарии (отдельно спасибо за предложение), к тому же, у меня это лишь опция. И вообще, когда я пишу "у меня", это звучит как-то слишком громко...
Back to top
View user's profile Send private message Send e-mail
Миша Спларов
Участник форума



Joined: 17 Nov 2003
Posts: 821
Карма: 65
   поощрить/наказать

Location: Россия, Москва

PostPosted: Tue Apr 11, 2006 7:31 am (спустя 1 час 26 минут; написано за 1 минуту 2 секунды)
   Post subject:
Reply with quote

Господа, у 8-ой оперы множество билдов. В каждом из них поведение может меняться. Говоря о багах стоит, в первую очередь, указывать версию конкретно, а во-вторых, использовать последний билд.
Back to top
View user's profile Send private message
AKS
Участник форума



Joined: 28 Dec 2005
Posts: 1174
Карма: 102
   поощрить/наказать


PostPosted: Tue Apr 11, 2006 8:16 am (спустя 45 минут; написано за 46 секунд)
   Post subject:
Reply with quote

Миша Спларов
Если "господа" касается меня, то отвечу, что лично я ни о каких багах не упоминал. Да и вообще - разве выделение можно назвать багом? Просто каждый решает свои задачи, и где-то выделение может мешать...
Back to top
View user's profile Send private message Send e-mail
WingedFox
Профессионал



Joined: 29 Apr 2003
Posts: 4064
Карма: 268
   поощрить/наказать

Location: Питер

PostPosted: Tue Apr 11, 2006 10:21 am (спустя 2 часа 5 минут; написано за 4 минуты 8 секунд)
   Post subject:
Reply with quote

AKS
Для некоторых задач - можно. 8*)

В общем, есть факт.
Когда я до Оперы доберусь, проверю почему она работает именно так, а не иначе и посмотрю на билд.

Могу только посоветовать проверить что будет с оперой, если выделить текст и перенести фокус на текстовое поле.
Что-то вроде
Code (html): скопировать код в буфер обмена
<input (december.com/html/4/element/input.html) id="a123" /> (december.com/html/4/element/.html)<br (december.com/html/4/element/br.html) /> (december.com/html/4/element/.html)
text, text, text<br (december.com/html/4/element/br.html) /> (december.com/html/4/element/.html)
<img (december.com/html/4/element/img.html) .... onmouseover="document.getElementById('a123').focus()" /> (december.com/html/4/element/.html)<br (december.com/html/4/element/br.html) /> (december.com/html/4/element/.html)
text, text, text<br (december.com/html/4/element/br.html) /> (december.com/html/4/element/.html)
Back to top
View user's profile Send private message
AKS
Участник форума



Joined: 28 Dec 2005
Posts: 1174
Карма: 102
   поощрить/наказать


PostPosted: Tue Apr 11, 2006 10:35 am (спустя 13 минут; написано за 57 секунд)
   Post subject:
Reply with quote

WingedFox
А что будет? Будет, как и ожидается, снято выделение, разве нет?
Back to top
View user's profile Send private message Send e-mail
WingedFox
Профессионал



Joined: 29 Apr 2003
Posts: 4064
Карма: 268
   поощрить/наказать

Location: Питер

PostPosted: Tue Apr 11, 2006 10:38 am (спустя 3 минуты; написано за 10 секунд)
   Post subject:
Reply with quote

А вот это и надо проверять.
Back to top
View user's profile Send private message
AKS
Участник форума



Joined: 28 Dec 2005
Posts: 1174
Карма: 102
   поощрить/наказать


PostPosted: Tue Apr 11, 2006 10:47 am (спустя 8 минут; написано за 1 минуту 12 секунд)
   Post subject:
Reply with quote

WingedFox
Домой приду - проверю. Но мне очень подошло Ваше изобретение, которое я упоминал ранее...
Back to top
View user's profile Send private message Send e-mail
Display posts from previous:   
Post new topic   Reply to topic All times are GMT + 3 Hours
Goto page 1, 2  Next
Page 1 of 2    Email to a Friend.
You cannot post new topics in this forum. You cannot reply to topics in this forum. You cannot edit your posts in this forum. You cannot delete your posts in this forum. You cannot vote in polls in this forum. You cannot attach files in this forum. You can download files in this forum.
XML