логин: 
<< предыдущая заметкаследующая заметка >>
23 августа 2011
Ну вы такие умные, почему вас никогда нет в аське?

Если вы такие все умные в JS, MYSQL и PHP, ну добавьте меня: jabber: [email protected] или (что хуже) ICQ 995395. Я спокойный, по пустякам беспокоить не стану. Чистоту и порядок гарантирую. Вселенную порабощать не буду. Но иногда надо спросить срочно, а не у кого...


UPD: Нашел решение сам! Свойство target:

<div onclick="function(e){if(e.target.tagName!='INPUT') alert(2) }">
Мой член: <input onclick='alert(1)' type=text> сантиметров!
</div>

БЫЛО:

Вот например столкнулся с проблемой. Скажем, есть конструкция <div onclick='alert(2)'>Мой член: <input onclick='alert(1)' type=text> сантиметров!</div>

Можно ли сделать как-то, чтобы при клике на «мой член» срабатывал alert(1), а при клике на форму input — этот alert(1) общий для всего блока — не срабатывал? Нет, я понимаю, что можно построить какой-то каскад флажков... Но наверняка ведь есть какие-то штатные средства JS на этот счет типа if(this.onclickProcesse) return false; или что-то в таком духе?

Делаю новый инсталлятор, хочу, чтобы при обновлении переменных конфига их можно было прямо сразу отредактировать.

<< предыдущая заметка следующая заметка >>
пожаловаться на эту публикацию администрации портала
Страницы, которые привлекли мое внимание за последние дни, рекомендую:
2017-11-22 В июне 1982
архив ссылок
Оставить комментарий
Mac Firefox
6
0
lleo.me/[email protected] Bond
Ллео не читатель, Ллео - писатель..
Windows Opera
1
0
wwolf (#1042596)
А если наоборот? Мы начнем беспокоить по пустякам? :)
Windows
0
0
[email protected]Леша (lesha)
офтопик, может будет интересно:
http://habrahabr.ru/blogs/infosecurity/126643/

"... Использование ETag для отслеживания пользователей ...Так же известно, что и заголовок Last-Modified теоретически может использоваться для отслеживания пользователей с помощью уникального значения времени обновления...Проблема с этими методами заключается в том, что они обходят пользовательские и программные настройки безопасности, связанные с cookie..."

ps. ух ты - тень появилась :)
Linux Firefox
 Москва
0
0
Не интересно, в еверкуках все это давно реализовано.

Кстати, в прошлом месяце смотрел - еверкуки-то развились за минувший год, было 7 методов, стало 9. У меня в движке пока что 3, все руки не доходят заняться.

Етаг там не самый смешной и не самый ценный. Мне больше Канвас ХТМЛ5 понравился - берется ПНГ из кэша и по точкам снимается цвет. Каждая точка - 3 байта. Курочка по зернышку - весь двор засран :)
Windows
 Киев
0
0
lesha (#437416)
Извращенно :) а принципиально то же что и etag/время - информация из кеша броузера/прокси.
Linux Firefox
 Москва
0
0
Нет, _принципиально_ это разные вещи. Потому что сколько разной независимой информации в кэше - столько и принципиальных способов с ней работать.
Windows Safari Chrome
0
0
Чудеснов (ale-chudesnov)
Более часто используемое и более гибкое (никому, кроме элемента, инициировавшего событие, ничего про логику приложения знать не надо) решение:

Первым делом создаем функцию, которая будет останавливать распространение любого события (onclick, onchange, onmouseover, неважно)

stop = function(event) {
(event = event || window.event)
.stopPropagation ?
event.stopPropagation()
:
(event.cancelBubble=true)
}

все кроссбраузерно, даже IE поймет

Затем просто вставляем stop(event) в нужном месте: в вашем случае - внутри onclick после alert(1)

а если хотите оставить все как есть (с проверкой непосредственно на div'e), пожалейте юзеров IE версии ниже девятой. Они, конечно, частенько мудаки, но далеко не все. вместо "e.target" поставьте "(e.target ? e.target : e.srcElement)" или опять же создайте внешнюю функцию типа function _t(e) {if(e)return ((t=e.target) ? t : e.srcElement)}и вместо e.target поставьте _t(event)

Инфу взял на http://javascript.ru/tutorial/events/intro

P.S. а вообще такие вещи решаются гораздо проще, если устанавливать обработчики событий через addEventListener(у которого даже отдельный параметр есть, за это отвечающий)/attachEvent, а не onclick.
Windows Safari Chrome
0
0
Чудеснов (ale-chudesnov)
упс, мои пробелы похерило
так тоже работает:

stop = function(event) {(event = event || window.event).stopPropagation ? event.stopPropagation() : (event.cancelBubble=true)}
Windows Safari Chrome
0
0
Чудеснов (ale-chudesnov)
Еще есть замечание/пожелание: при редактировании профиля вместо того, чтобы по keyup в текстовом поле вставлять «исправленный» текст, лучше этого вообще не делать или делать в onchange, потому что даже когда я нажимаю Ctrl+A, просто чтобы стереть адрес целиком и ввести новый, выделение снимается, а курсор мой оказывается в конце поля. по keyup можно давать какие-то внешние сигналы (например, мигать каким-нибудь индикатором, если строка невалидная), но сам текст трогать вредно и почти бессмысленно.
Windows Safari Chrome
0
0
Чудеснов (ale-chudesnov)
Смена мыла - отдельный аттракцион. Стер старый адрес, ввел новый, нажал Enter, появился индикатор аякса, провисел минуту, меня задолбало, и я пошел этот комментарий писать.
Обновил страницу, а там внезапно новый адрес.
Windows Safari Chrome
0
0
Чудеснов (ale-chudesnov)
А вообще, насчет исправления текста - удобнее пользоваться https://developer.mozilla.org/en/preventDefault

всего комментариев: 12

<< предыдущая заметка следующая заметка >>