function getElementXY(node) {
// если у html/body имеется паддинг или нода находится внутри ноды со скроллом (но не html),
// то нужно будет дополнительно погемороиться
var x = 0, y = 0;
while(node.offsetParent) {
x += node.offsetLeft;
y += node.offsetTop;
node = node.offsetParent;
}
return [x, y];
}
function onClick(evt) {
// координаты мыши на странице
var mouseXY = [evt.clientX, evt.clientY];
// координаты ноды на странице
var nodeXY = getElementXY(evt.currentTarget || evt.srcElement);
// координаты мыши внутри ноды - просто разность
var XY = [ mouseXY[0] - nodeXY[0], mouseXY[1] - nodeXY[1] ];
// проверка (я смотрел в ие6, фф2, опера 9.5)
// alert(mouseXY[0] +", "+ mouseXY[1] +"\n"+ nodeXY[0] +", "+ nodeXY[1]);
}
Безусловно. Только, по факту, наличие готовых решений в .net выливается в перемалывание нелепой верстки. А это уже мое время, с которого не будет ни знаний, ни строчки в резюме. Уж лучше бы этой альтернативы не было :)
> Не используйте их или используйте свои web-контролы, и будет «полный» контроль.
И вот тут две трети программеров начинают выть и стучать ногами по полу: «Не хочу, не буду!» — под миллиардом предлогов: «А это в чужом коде зашито», «А это долго», «А что плохого в форме на весь body?», «А тут просто не получится», «А это и так должно верстаться», «А тут надо много переписывать», «А тут логика не позволяет»…
события это часть DOM'а, они даже называются DOM Event. и в них нет ничего сложного (ну, кроме mutation, которые в ие, по сути, отсутствуют).
аякс требует совсем мало кода, в общем случае — пять строчек, и его реализация тоже «ни разу не самое главное».
суть в том, что сайты надо делать не механически (чтоб работало). вся механика должна строиться динамически на основе логики, а логика должна быть гибкой и расширяемой.
то, что делается по схеме jQuery и 100 плагинов, уж извини, подделки со сроком годности «пока не тронут»
Класс нужен для того, чтобы css накладывать. Никто не запрещал в классах указывать свои контактные данные.
Безусловно, класс можно использовать, чтобы скриптам было на что опираться. Допустим, вкладки какие-нибудь: класс «tabs» может служить и для css, и для js. Но не в данном случае: для ссылки достаточно посмотреть что в href'е значится (отсутствие протокола или его лишнее указание (ссылка на тот же сайт) и отсутствие target'а) и не захламлять html. Скорее, я бы оставил класс, чтобы избранные ссылки не попадали в выборку, у нас же все ссылки приводят к подзагрузке, да? И таргет туда же: должен быть стандартный контейнер и возможность указать другой.
И, кроме того, если нажатие ссылки будет инициализировать несколько контейнеров (товар из каталога, схожие товары, категория), то эти настройки тоже выкидывать в верстку?
Ты даже не знаешь как работает банальный target ;) зато уже заступился за любимый велосипед. Юзерам без JS (их же еще не отменили?) будет очень не удобно работать с сайтом, с которого все ссылки открываются мало того, что в другом окне, так еще и в одном и том же другом окне.
«все что относится к поведению выносится за пределы HTML» это далеко не «разделение данных (HTML) от поведения (JS)». Поведение основывается на логике, к которой фреймворки не имеют никакого отношения. $(«a»).click не логика, а банальная работа с DOM'ом, которая должна быть между делом.
от ведь заморочки. ну поставил ты кому-то минус случайно, ну и что? теперь этот человек ночью спать не будет?
я еще понимаю рейтинг-заморочки на сайтах по фрилансу (там это реальные деньги) или профильных, узкоспециализированных порталах (авторитетность и индикатор компетентности), но не на habrahabr.ru — очень популяный сайт без порога вхождения, пусть и специализированные статьи тут есть, 1 из 5 (по моей специализации) интересная и грамотная, но читают, пишут комментарии и оценивают люди с любым проф. уровнем (соотв. 90% оценок не компетентны) — карма это показатель симпатии сообщества в целом, она ничего дельного не решает.
PS а вот были бы модерируемые сообщества (без свободного вхождения) с внутренней кармой… :)
разумеется, но не Хромом единым :) когда ие6 тормозит — еще простительно, но надо что-то переделать, а когда тормозит фокс/опера — надо подумать а стоило вообще браться?
ну, и раз на то пошло, то уж надо как в фотошопе: направление (угол) и «высота» источника освещения. а, да, там еще можно кривую интенсивности выстраивать :)
function getElementXY(node) { // если у html/body имеется паддинг или нода находится внутри ноды со скроллом (но не html), // то нужно будет дополнительно погемороиться var x = 0, y = 0; while(node.offsetParent) { x += node.offsetLeft; y += node.offsetTop; node = node.offsetParent; } return [x, y]; } function onClick(evt) { // координаты мыши на странице var mouseXY = [evt.clientX, evt.clientY]; // координаты ноды на странице var nodeXY = getElementXY(evt.currentTarget || evt.srcElement); // координаты мыши внутри ноды - просто разность var XY = [ mouseXY[0] - nodeXY[0], mouseXY[1] - nodeXY[1] ]; // проверка (я смотрел в ие6, фф2, опера 9.5) // alert(mouseXY[0] +", "+ mouseXY[1] +"\n"+ nodeXY[0] +", "+ nodeXY[1]); }И вот тут две трети программеров начинают выть и стучать ногами по полу: «Не хочу, не буду!» — под миллиардом предлогов: «А это в чужом коде зашито», «А это долго», «А что плохого в форме на весь body?», «А тут просто не получится», «А это и так должно верстаться», «А тут надо много переписывать», «А тут логика не позволяет»…
аякс требует совсем мало кода, в общем случае — пять строчек, и его реализация тоже «ни разу не самое главное».
суть в том, что сайты надо делать не механически (чтоб работало). вся механика должна строиться динамически на основе логики, а логика должна быть гибкой и расширяемой.
то, что делается по схеме jQuery и 100 плагинов, уж извини, подделки со сроком годности «пока не тронут»
Безусловно, класс можно использовать, чтобы скриптам было на что опираться. Допустим, вкладки какие-нибудь: класс «tabs» может служить и для css, и для js. Но не в данном случае: для ссылки достаточно посмотреть что в href'е значится (отсутствие протокола или его лишнее указание (ссылка на тот же сайт) и отсутствие target'а) и не захламлять html. Скорее, я бы оставил класс, чтобы избранные ссылки не попадали в выборку, у нас же все ссылки приводят к подзагрузке, да? И таргет туда же: должен быть стандартный контейнер и возможность указать другой.
И, кроме того, если нажатие ссылки будет инициализировать несколько контейнеров (товар из каталога, схожие товары, категория), то эти настройки тоже выкидывать в верстку?
PS я считаю Наполеоном себя и скоро сделаю Францию величайшей империей
я еще понимаю рейтинг-заморочки на сайтах по фрилансу (там это реальные деньги) или профильных, узкоспециализированных порталах (авторитетность и индикатор компетентности), но не на habrahabr.ru — очень популяный сайт без порога вхождения, пусть и специализированные статьи тут есть, 1 из 5 (по моей специализации) интересная и грамотная, но читают, пишут комментарии и оценивают люди с любым проф. уровнем (соотв. 90% оценок не компетентны) — карма это показатель симпатии сообщества в целом, она ничего дельного не решает.
PS а вот были бы модерируемые сообщества (без свободного вхождения) с внутренней кармой… :)
редкий пример когда статические блоки тормозят браузер. второй фокс.