Свойства объекта событие
В объекте события содержится подробнейшая информация о том, что и где произошло.
К сожалению, здесь много кросс-браузерных несовместимостей, однако самые важные из них легко преодолимы.
Тип события можно получить, используя кроссбраузерное свойство type объекта событие.
function getEventType(e) {
if (!e) e = window.event;
alert(e.type);
}
Данный код в действии (в примере обрабатываются события click и mouseout):
Чаще всего нужно узнать, на каком элементе сработало событие.
Например, мы поймали на внешнем div'е и хотим знать, на каком из внутренних элементов оно на самом деле произошло.
В Internet Explorer у объекта window.event для этого есть свойство srcElement, в остальных браузерах, работающих по рекомендациям W3C, для этого используется event.target.
Вот пример использования этого свойства. Обработчик стоит только на внешнем диве, но благодаря event.target выводит по клику класс исходного элемента.
<div class="d1"
onclick="*!*t=event.target||event.srcElement; alert(t.className)*/!*"
>
<span class="number">1</span>
<div class="d2">
<span class="number">2</span>
<div class="d3">
<span class="number">3</span>
</div>
<a class="d2a" href="javascript:void(0)">Ссылка</a>
</div>
</div>
Javascript-обработчик в примере висит только на внешнем диве d1 и выглядит примерно так:
function(event) {
// получить объект событие.
// вместо event лучше писать window.event
event = event || window.event
// кросс-браузерно получить target
var t = event.target || event.srcElement
alert(t.className)
}
Для событий mouseout и mouseover предусмотрен способ получить как элемент на который курсор мыши перешел, так и элемент, с которого он перешел.
Эти свойства - relatedTarget в W3C, и fromElement/toElement в Internet Explorer.
// Обработчик для mouseover
function mouseoverHandler(event) {
event = event || window.event
var relatedTarget = event.relatedTarget || event.fromElement
// для mouseover
// relatedTarget - элемент, *!*с которого*/!* пришел курсор мыши
}
// Обработчик для mouseout
function mouseoutHandler(event) {
event = event || window.event
var relTarg = event.relatedTarget || event.toElement
// для mouseout
// relatedTarget - элемент, *!*на который*/!* перешел курсор мыши
}
Свойство relatedTarget дополняет target. В нем всегда находится информация о втором элементе, участвовавшем в событии.
Поэтому его можно получить для IE, взяв то свойство из fromElement/srcElement, которое не равно target:
if (!e.relatedTarget && e.fromElement) {
e.relatedTarget = (e.fromElement==e.target) ? e.toElement : e.fromElement
}
При всплытии - событие по очереди вызвает обработчики на элементе-триггере и дальше, вверх по документу.
По мере всплытия, текущим элементом каждый раз становится новый. Иначе говоря. текущий элемент - это тот, к которому в данный момент "доплыло" событие.
Стандартный способ получить текущий элемент - использовать переменную this.
Например, при клике на внутренний div, код в этом примере последовательно отмечает элементы, на которых регистрируется всплывающее событие:
<div class="d1" onclick="highlightMe(this)">1
<div class="d2" onclick="highlightMe(this)">2
<div class="d3" onclick="highlightMe(this)">3</div>
</div>
</div>
После получения события обычно интересно узнать, какая кнопка была нажата. Если, конечно, это не событие contextmenu, с которым все и так понятно 
Для этого в объекте event есть два свойства: event.which и event.button, которые содержат числовые значения, соответствующие нажатой кнопке. К сожалению, тут есть некоторые несовместимости.
| |
Internet Explorer |
Firefox, Safari Win и Opera |
Konqueror |
| ЛЕВАЯ КНОПКА |
event.which |
undefined |
1 |
1 |
| event.button |
1 |
0 |
1 |
| СРЕДНЯЯ КНОПКА |
event.which |
undefined |
2 |
2 |
| event.button |
4 |
1 |
4 |
| ПРАВАЯ КНОПКА |
event.which |
undefined |
3 |
3 |
| event.button |
2 |
2 |
2 |
Свойство event.which было изначально изобретено Netscape, а event.button использовалось в Internet Explorer.
Через некоторое время браузеры стали использовать оба и все перепуталось.
В стандарте W3C прописано свойство button, которое ведет себя, как в Firefox, т.е:
- 0 - левая кнопка
- 1 - средняя кнопка
- 2 - правая кнопка
Подход создателей браузера Internet Explorer, вообще говоря, более универсальный, так как button является 3-битовым числом, каждый бит которого отвечает за кнопку мыши.
Так, button & 1 (первый бит) установлен в 1, если нажата левая кнопка, button & 2 (второй бит) установлен в 1, если нажата правая кнопка, и button & 4 (третий бит) - если нажата средняя.
В результате мы не можем отловить, когда, например, нажаты левая и правая кнопки, а когда только левая или только правая. К сожалению, это можно сделать только в IE.
Удобнее всего - взять за основу свойство which, которое одинаково поддерживают почти все браузеры.
Остается лишь составить which из button для Internet Explorer:
if (!e.which && e.button) {
if (e.button & 1) e.which = 1
else if (e.button & 4) e.which = 2
else if (e.button & 2) e.which = 3
}
Вот универсальный тестовый стенд по определению клавиш. Выбирайте любую мышь и жмите кнопу из любого браузера - ниже появятся названия событий и значения which/button.
При обработке событий, связанных с мышью, нужен кроссбраузерный способ получения координат курсора из события в обработчике.
Координаты курсора мыши относительно окна находятся в стандартных свойствах clientX/clientY. Они одинаково поддерживается всеми браузерами.
Если у вас есть окно 500x500, и мышь находится в центре, то clientX и clientY будут оба равны 250. Если вы затем проскроллируете документ вниз, налево или вверх, не двигая курсор - значения clientX/clientY не изменятся, так как отсчитываются относительно окна, а не документа.
Как правило, при обработке события нужна позиция мыши относительно документа, учитывающая прокрутку. Стандарт W3C предоставляет для этого свойство pageX/pageY.
Если у вас есть окно 500x500, и мышь находится в центре, то pageX и pageY будут оба равны 250. Если вы затем проскроллируете на 250 пикселей вниз, pageY станет равным 750.
Таким образом pageX/pageY содержат координаты, на каком месте документа произошло событие, учитывая все прокрутки.
Свойства pageX/pageY поддерживаются всеми браузерами, кроме Internet Explorer.
В IE их можно получить из clientX/clientY, прибавив к ним scrollLeft/scrollTop.
Обычно оно находится в <body>: document.body.scrollLeft, но это не всегда так. Например, при выборе Strict DTD оно высчитывается для <html>: document.documentElement.scrollLeft. Кроме того, тэга <body> может просто не быть в документе.
Поэтому мы сначала возьмем html.scrollLeft (если есть), затем проверим body.scrollLeft. Если нет ни того, ни того, то 0.
var html = document.documentElement
var body = document.body
e.pageX = e.clientX + (html && html.scrollLeft || body && body.scrollLeft || 0)
Кроме того, document в IE может быть немного сдвинут с позиции 0,0. Значение сдвига находится в document.documentElement.clientLeft/clientTop, и его также необходимо учесть.
Этот код позволяет надежно получить pageX/pageY для IE, в котором его изначально нет:
if (e.pageX == null && e.clientX != null ) {
var html = document.documentElement
var body = document.body
e.pageX = e.clientX + (html && html.scrollLeft || body && body.scrollLeft || 0) - (html.clientLeft || 0)
e.pageY = e.clientY + (html && html.scrollTop || body && body.scrollTop || 0) - (html.clientTop || 0)
}
Этот обработчик mouseMove обновляет координаты мыши относительно документа.
function mouseShowHandler(e){
e = e || window.event
if (e.pageX == null && e.clientX != null ) {
var html = document.documentElement
var body = document.body
e.pageX = e.clientX + (html && html.scrollLeft || body && body.scrollLeft || 0) - (html.clientLeft || 0)
e.pageY = e.clientY + (html && html.scrollTop || body && body.scrollTop || 0) - (html.clientTop || 0)
}
document.getElementById('mouseX').value = e.pageX
document.getElementById('mouseY').value = e.pageY
}
Координата X:
Координата Y:
Вы узнали, как работают и как кросс-браузерно получить основные свойства объекта события:
- Текущий элемент:
this
- Тип события:
event.type
- Элементы-триггеры:
event.target/relatedTarget
- Кнопка мыши:
event.which
- Курсор относительно окна:
event.clientX/clientY
- Курсор относительно документа:
event.pageX/pageY
Кроме того, увидели их в действии на демо.
Этих свойств хватает для 95% задач, связанных с событиями.
|
Автор: Гость (не зарегистрирован), дата: 29 апреля, 2009 - 00:27
#permalinkв опере правую не отследить
Автор: Гость (не зарегистрирован), дата: 4 июня, 2009 - 15:53
#permalinkОтследить можно. Просто в опере по-умолчанию запрещён перехват правой кнопки мыши.
Автор: Гость (не зарегистрирован), дата: 12 июня, 2009 - 18:00
#permalinkСпасибо. спасибо. Я к вам попал с википедии. То, что надо.
Автор: Гость (не зарегистрирован), дата: 12 июня, 2009 - 18:02
#permalinkНе могу понять, почему window.pageXOffset, или ..Y.. вечно ноль показывает. Вы не знаете?
Автор: Anatolich, дата: 1 июля, 2009 - 19:14
#permalinkПри различных разрешениях экрана координаты объектов на странице различные.
Есть ли какое - то решение этого случая?
Автор: Гость (не зарегистрирован), дата: 14 июля, 2009 - 20:39
#permalinkfunction getEventType(e) { if (!e) var e = window.event; alert(e.type);А почему так сложно? Почему нельзя просто
Автор: apxat (не зарегистрирован), дата: 9 августа, 2009 - 00:22
#permalinkБыло бы полезно добавить полный код последнего примера (демо), всмысле хтмл для полей в которых выводятся координаты, не совсем понял как они в реальном времени работают.
Автор: AraGnom, дата: 9 ноября, 2009 - 22:36
#permalinkПочему в FireFox v3 "демо" для следующего хтмл кода не работает???:
.headwindow {
background-color: #03F;
height: 20px;
width: auto;
}
div класс="headwindow" онКлик="mouseShowHandler()" /div
форма
инпут id="mouseX" type="text"
инпут id="mouseY" type="text"
/форма
Проверял алертом, обработка скрипта слетает после:if (e.pageX == null && e.clientX != null )???подскажите плззз)))
Автор: bga (не зарегистрирован), дата: 15 ноября, 2009 - 21:12
#permalinkхочу уточнить что в IE window.event является readonly объектом и по этому чтобы код работал корректно нужно клонировать window.event с помощью встроенной IE функции var e=document.createEventObject(window.event)
Автор: Gera (не зарегистрирован), дата: 20 ноября, 2009 - 16:46
#permalinkЕсли у вас есть окно 500x500, и мышь находится в центре, то pageX и pageY будут оба равны 250. Если вы затем проскроллируете на 250 пикселей вниз, pageY станет равным 750.
250+250 = 750?
Автор: Александр88 (не зарегистрирован), дата: 8 декабря, 2009 - 19:07
#permalinkА есть ли возможность передать событие родительскому элементу?
Например, есть обработчик события для параграфа в диве (на моуздаун). И дивов таких два. Могу ли я из этого обработчика узнать в каком диве параграф, на который щелкнули?
Автор: Гость (не зарегистрирован), дата: 14 декабря, 2009 - 15:33
#permalinkАвтору респект
Автор: mauser (не зарегистрирован), дата: 16 декабря, 2009 - 01:28
#permalinkСтолкнулся с тем, что relatedTarget или toElement не хотят работать в FF. Есть функция, вызываемая по onMouseOut с ячейки
function menu_out_main (){
var objTo = window.event.toElement
alert(objTo);
}
В IE и Opera алерт появляется, в FF же - ноль реакции. Кто-нибудь знает, в чём дело?
Автор: Zander (не зарегистрирован), дата: 29 декабря, 2009 - 03:25
#permalinkА может кто подскажет как скрипту определить что окно прокручено? Или хоть в какую сторону копать нужно?
Задача стоит такая:
Есть шапка с определённым размером и есть блок под шапокой, вот при вертикальной прокрутке нужно что бы блок сначала ехал за шапкой, а потом уже висел под верхом окна броузера. Я где то видел такое реализованное но ессно вспомнить нимагу(((
Автор: Гость (не зарегистрирован), дата: 24 января, 2010 - 07:05
#permalinkКак я рад, это то что надо!!!
Автор: Кошка (не зарегистрирован), дата: 26 января, 2010 - 16:52
#permalinkЗдравствуйте у меня следующая проблемка.
Нужно организовать поиск по массиву так, как реализован поиск в яндексе.
Т.е есть некий массив $mas (этот массив формируется в php-коде);
На html-форме есть текстовое поле ввода
При начале ввода текста c клавиатуры в это поле, т.е. при срабатывании события onkeyup (насколько я понимаю), под текстовым полем ввода должна появляться текстовая область ввода
В которую должны выводиться элементы из массива $mas, начинающиеся с символов, введённых в текстовом поле Pole, причем элементы массива выводятся с новой строки.
Пользователь должен иметь возможность выбрать из предложенных элементов тот, что ему нужен. И по клику мышкой выбранный элемент должен появиться в поле Pole, а текстовая область TextOblast исчезнуть, т.е. стать невидимой.
PS это вообще реально сделать с помощью JavaScript?
Автор: thunder2, дата: 25 февраля, 2010 - 01:17
#permalinkВставил вот этот код
function mouseShowHandler(e){
e = e || window.event
if (e.pageX == null && e.clientX != null ) {
var html = document.documentElement
var body = document.body
e.pageX = e.clientX + (html && html.scrollLeft || body && body.scrollLeft || 0) - (html.clientLeft || 0)
e.pageY = e.clientY + (html && html.scrollTop || body && body.scrollTop || 0) - (html.clientTop || 0)
}
document.getElementById('mouseX').value = e.pageX
document.getElementById('mouseY').value = e.pageY
}
на страницу. И странное дело: в ФФ и пр. код работает, а в ИЕ ругается на if (e.pageX == null && e.clientX != null ). Хотя на странице этого сайта этот код работает нормально. Естественно этот код поместил в функцию, а функцию присвоил собитию onckick элемента.
Чё может быть ?
Автор: kill3rl88p (не зарегистрирован), дата: 9 марта, 2010 - 20:22
#permalinkПодскажите как лучше всего реализовать следующую штуку:
на документе только одна большая таблица, нужно реализовать "выделение" ячеек:
нажимаем кнопку мыши на первой, тащим вниз, отпускаем. При этом "выделенные" области как-нибудь выделяются (например фон у них становится темнее). Тут еще появляется одна проблема - стандартное выделение, которое делает браузер - возможо ли его как нибудь убрать или скрыть?
Автор: A1eX (не зарегистрирован), дата: 16 марта, 2010 - 23:34
#permalinkПодскажите пожалуйста,как узнать в какую сторону был прокручен документ,
т.е. какое событие сработало: scrollTop или scrollLeft и можно ли узнать на сколько пикселей был прокручен документ?
Автор: Andrew.R (не зарегистрирован), дата: 23 марта, 2010 - 00:07
#permalinkПодскажите в чем ошибка данного кода для FF (срабатывает через раз), для IE все нормально.
// определен обработчик для всего документа
document.onmouseover = setupEffect;
document.onmouseout = cleanupEffect;
// функции обработки, кроссплатформенные
function setupEffect(event) {
var event = event || window.event;
var relTag = event.relatedTarget || event.toElement;
selmenu(relTag) }
function cleanupEffect(event) {
var event = event || window.event;
var relTag = event.relatedTarget || event.fromElement;
selmenu(relTag)}
// базовый обработчик
function selmenu(src) {
while ("HTML" != src.tagName) {
< текст обработчики >
}
И вот тут то как раз в FF пишет что src не определен. Хотя если поводить мышью по странице иногда сюда поступает событие. Самое интересное если отключить одну из двух исходных функциф (cleanupEffect или setupEffect) то в selmenu всегда передается src без ошибок.
В чем тут глюк в FF?
p.s. вообще FF странно работает в отличие от IE (даже старых версий)
Автор: Гость (не зарегистрирован), дата: 25 марта, 2010 - 00:55
#permalinkТакже можно попробовать перехватывать события не из document, а из document.body
Автор: Гость (не зарегистрирован), дата: 25 марта, 2010 - 01:02
#permalinkЕщё чего-то в памяти всплывает, что в FF event как особенно передаётся, типа:
document.onmouseover = setupEffect(event); // или setupEffect(), а event автоматом передаётся по значению в переменную "e", по экспериментируйте
document.onmouseout = cleanupEffect(event); // или cleanupEffect()
function cleanupEffect(e) {
...
}
function setupEffect(e) {
...
}
Автор: max5600 (не зарегистрирован), дата: 10 мая, 2010 - 15:04
#permalinkСделайте так, чтобы можно было копировать код, представленный на ваших страницах, без 01 02 03 04 и так далее.
Автор: X000R (не зарегистрирован), дата: 14 июля, 2010 - 17:26
#permalinkБыла проблема с фоксом. В функции аналогичной mouseShowHandler() он упорно твердил что e=undefined. По моему автор не указал что 'e' объект временный !
И считать координаты надо не отходя от кассы.
var mCur; window.onmousemove=function(e) { mCur = mousePageXY(e); } function mousePageXY(e) { var x = 0, y = 0; if (!e) e = window.event; if (e.pageX || e.pageY) { x = e.pageX; y = e.pageY; } else if (e.clientX || e.clientY) { x = e.clientX + (document.documentElement.scrollLeft || document.body.scrollLeft) - document.documentElement.clientLeft; y = e.clientY + (document.documentElement.scrollTop || document.body.scrollTop) - document.documentElement.clientTop; } return {"x":x, "y":y}; }таким образом текущие координаты будут доступны из любого места кода в любое время, как свойсва объекта mCur: mCur.x , mCur.y
Автор: Гость (не зарегистрирован), дата: 4 августа, 2010 - 14:11
#permalinkКак отследить событие изменения текстового поля при автоматическом заполнении из выпадающего списка ранее вводимых значений сохраненных браузером (FF3)?
onkeyup - при ручном вводе
onchange - только после смене фокуса с этого элемента
...
Автор: Glinkz, дата: 5 января, 2011 - 12:27
#permalinkпо ходу прочтения статьи навязался вопросик:
есть у меня таблица, в которой есть несколько ячеек.
какой обработчик надо повешать на таблицу, что бы при клике на один из элементов, которые она содержит, я мог получить id этого элемента?
Автор: Jeer, дата: 23 января, 2011 - 15:59
#permalinkРебят, сколько ни ковыряю, что-то не могу разобрать. Можно ли самому создать такое событие, которое устанавливает значения ClientX/ClientY (pageX/pageY), а не просто получает их? Подскажите, для примера, функцию, автоматизирующую некоторое перетаскивание:
1. Устанавливаются заданные координаты Х,Y (150, 250)
2. Происходит нажатие левой кнопки мыши
3. Устанавливаются другие координаты (200,300)
4. Происходит отпускание кнопки
Это бы всё расставило на свои места, заранее благодарю.
Автор: exec, дата: 24 января, 2011 - 15:11
#permalinkПолезно было бы добавить, что в Safari в event.target может попадаться текстовая нода, поэтому надо делать проверку:
Автор: Любопытствующий (не зарегистрирован), дата: 31 января, 2011 - 22:24
#permalinkУмно!
.
А как программно подвинуть курсор мыши?
Второй вопрос как программно нажать кнопки на мыши?
можно какиенибудь не затейливые примерчики
Автор: Grundiss (не зарегистрирован), дата: 4 февраля, 2011 - 06:03
#permalinkА как в ИЕ получить значение позиции курсора мыши относительно элемента? В FF для этих целей используется свойство event.layerX, а в ИЕ?
Автор: Kapillar, дата: 6 февраля, 2011 - 19:32
#permalinkТип события можно получить, используя кроссбраузерное свойство type объекта событие.
1 function getEventType(e) {
2 if (!e) e = window.event;
3 alert(e.type);
4 }
Данный код в действии (в примере обрабатываются события click и mouseout):
недопонял, как этот код обрабатывает событие, ведь так тоже обработка произойдет:
/ input value="определение" onmouseout="alert('mouseout');" onclick="alert('click');" type="button" /
Автор: Алексеище (не зарегистрирован), дата: 2 марта, 2011 - 14:31
#permalinkВаш последний пример, как я понял, перехватывает событие mousemove, по этому он становится не совсем наглядным для демонстрации PageX/PageY при скроллинге и недвижимой мышке.
Автор: Mixail (не зарегистрирован), дата: 30 марта, 2011 - 12:54
#permalinkfunction mouseShowHandler(e){ e = e || window.event if (e.pageX == null && e.clientX != null ) { var html = document.documentElement var body = document.body e.pageX = e.clientX + (html && html.scrollLeft || body && body.scrollLeft || 0) - (html.clientLeft || 0) e.pageY = e.clientY + (html && html.scrollTop || body && body.scrollTop || 0) - (html.clientTop || 0) } document.getElementById('mouseX').value = e.pageX document.getElementById('mouseY').value = e.pageY }Автор забыть указать Важный момент, что он использовал метод вызова на jq
Если кому интересно без jq, то делается это следующим образом в body прописывается функция onmousemove.
Автор: Mixail (не зарегистрирован), дата: 30 марта, 2011 - 12:55
#permalinkзабыл*
Автор: Гость (не зарегистрирован), дата: 10 апреля, 2011 - 04:34
#permalinkНа FireFox 4 на сдешней странице всё нормально, а отдельно код с определением места курсора не идет. Почему и как исправить?
Автор: Гость (не зарегистрирован), дата: 19 апреля, 2011 - 16:05
#permalinkА зачем дополнительно проверять на существование html в
e.pageX = e.clientX + (html && html.scrollLeft || body && body.scrollLeft || 0) - (html.clientLeft || 0);?
Ведь html всегда существует, а в случае отсутствие у него свойства scrollLeft и так будет выдаваться undefined, т.е. значение false?
Тем более, что дальше в этой же строчке вводим проверяем свойство html.clientLeft без проверки на существование html?
Автор: kent666, дата: 29 апреля, 2011 - 12:25
#permalinkЗдравствуйте!
Можете объяснить принцип работы переменной this
Как я понимаю это что-то на подобии event. Он будет вноситься в функцию первым аргументом или вторым если в аргументах есть event.
А далее можно будет не прописывать
var X=document.getElementById...
а просто
this.style.color... например для смены цвета объекта на котором сработал обработчик
Автор: Wayne (не зарегистрирован), дата: 13 августа, 2011 - 02:53
#permalinkfunction getEventType(e) {if (!e) e = window.event;
alert(e.type);
}
Автор, пожалуйста, будь так добр пояснить сий "трюк". Что за чёртова буква "e"? Как это вообще работает? Почему в финальном демо при назначение функции обработчиком события она работает? Как? Откуда она берёт параметр e для своей работы, если эта функция нигде не вызывается и никто ей не передаёт параметров?
Если это особенность вызова функции без параметров, тогда как в её описание/определение аргументы всё же указаны, то следовало бы указать эту деталь.
Как я понял. А я ничерта не понял как это работает! Финальное демо обрабатывает событие. Когда функция назначается обработчиком события onmousemove, то она при исполнение получает вместо e - это самое событие onmousemove. Видимо, это особенность работы функций в JS. И как это понимать? Как всё это происходит??????? Где почитать?
У меня вообще сложилось впечатление, что в данной статье использовался кривой подход к объектному программированию. Вроде как об ООП речи не идёт, но в то же время используются принципы ООП.
Простите мне мою горячность, но статья без пояснения вышеописанной детали бред. Я прочитал всю статью. Рылся в интернете. И так за 2 дня не понял весь механизм работы демо в финале статьи!!! Я в ярости.
Автор: Wayne (не зарегистрирован), дата: 13 августа, 2011 - 02:59
#permalinkВот ещё одна мега промашка.
"Координаты курсора мыши относительно окна находятся в стандартных свойствах clientX/clientY. Они одинаково поддерживается всеми браузерами."
"Как правило, при обработке события нужна позиция мыши относительно документа, учитывающая прокрутку. Стандарт W3C предоставляет для этого свойство pageX/pageY."
ииии??? и что же такое на самом деле pageX/clientX?? Что ещё за стандартные свойства? Сколько уже скриптов писал, ни разу в жизни не сталкивался с общим однозначным понятием для всех JS под названием "стандартный свойства". Ладно. Не буду негодовать.
Я хочу через alert узнать x координату своей мыши относительно окна. Например, используя СТАНДАРТНОЕ СВОЙСТВО clientX. К жопе чего мне нужно приписать .clientX?????
alert(xxx.clientX)Что должно стоять на месте "xxx", чтобы я в результате срабатывания alert получил искомую свою координату мыши?
Спасибо, что терпеливо прочитали мои возмущения. Пожалуйста. Обойдетесь без бессмысленных ответов. Я перечитал все комментарии к этой статье. Из низ 90% бессмысленны и не отвечают на поставленные вопросы полноценным образом.
Автор: Гость (не зарегистрирован), дата: 17 февраля, 2012 - 20:41
#permalinkДоброго времени суток! может вы сможете мне помочь? мне надо чтобы вот в этом тексте
$(function () {
function makeTabs(contId) {
var tabContainers = $('#'+contId+' div.tabs > div');
tabContainers.hide().filter(':ID').show();
$('#'+contId+' div.tabs ul.tabNavigation a').click(function () {
tabContainers.hide();
tabContainers.filter(this.hash).show();
$('#'+contId+' div.tabs ul.tabNavigation a').removeClass('selected');
$(this).addClass('selected');
return false;
}).filter(':ID').click();
}
});
ID было не названием (сейчас ид (в ксс) материала у меня работает как просто название) а конкретным, уникальным номером задающим, свое, уникальное название-номер для таба.
Если не сложно конечно...
Автор: вафавафвафвафывафыафыафы (не зарегистрирован), дата: 23 февраля, 2012 - 14:23
#permalinkлучше б вы показали как отслеживать положение экрана относительно документа
Автор: Гость (не зарегистрирован), дата: 28 февраля, 2012 - 15:22
#permalinkСовсем ничего не получается, устал....
координаты определяются и в ИЕ и в Опере, но только не в FF
((((
помогите, пожалуйста....что я не так делаю?
вот тестовая страница: killarney.ru/event-test2.htm
Автор: Малик (не зарегистрирован), дата: 8 августа, 2012 - 19:53
#permalinkА можно получить координаты относительно какого-нибудь блока?
Автор: Александр 60 лет (не зарегистрирован), дата: 2 ноября, 2012 - 11:42
#permalinkУважаемые !! помогите пожалуйста !!
как положить координаты ,клик .и двойной клик мышки в текстовый файл ?
бьюсь пятые сутки ...помогите !!
Автор: Anemic (не зарегистрирован), дата: 2 ноября, 2012 - 20:13
#permalinkДля этого Вам нужно воспользоватся AJAX запросом, которым Вы передаете на серверную сторону координаты, и уже php на серверной стороне запишет их в нужный файл.
Автор: morfeus (не зарегистрирован), дата: 4 декабря, 2012 - 14:30
#permalinkНе могу понять почему в Опере 12 нажатие на среднюю кнопку (колесико) не вызывает срабатывания onmousedown/ что за фича такая? И можно это поправить? Ответьте, уважаемые знатоки Java Script.
Автор: Mikee, дата: 13 октября, 2013 - 08:00
#permalinkДрузья, с clientX и clientY не все так радужно, как описано в статье.
Они одинаково поддерживается всеми браузерами.
Это не правда. Если быть точным, это не для всех событий правда.
Например, мне надо было отследить положение курсора во время скроллинга. Мне нужно только свойство clientX. Так вот у события onscroll этого свойства в FF не обнаружилось. И на планшетном (сенсорном) Chrome, хотя на виндузовом Chrome все работает.
Автор: ЖИРАФ (не зарегистрирован), дата: 9 января, 2014 - 14:59
#permalinkТема статьи "Свойства объекта событие", но, почему-то, ничего не сказано, например, о событии "onkeypress". =( грустно...
Автор: alexan0308, дата: 5 августа, 2014 - 16:05
#permalinkХорошая статья, спасибо =) Мне очень пригодилось при написании событий клика мышью по объектам.
Автор: new_developer, дата: 6 августа, 2014 - 22:02
if (!e.relatedTarget && e.fromElement) {
e.relatedTarget = (e.fromElement==e.target) ? e.toElement : e.fromElement
}
кто может разшифровать эту строку?)
Автор: Гость (не зарегистрирован), дата: 7 декабря, 2014 - 21:02
#permalinkМышка-клавиатура-загрузка_страницы это чудно. Но что насчёт событий tap&swipe? Заранее благодарен.
Автор: Александр Волошин (не зарегистрирован), дата: 4 сентября, 2015 - 13:16
#permalinkЗдравствуйте, не могу понять как на Firefox у вас вызывается событие click даже когда кликаю средней кнопкой мыши.
Автор: Гость (не зарегистрирован), дата: 23 июня, 2016 - 15:19
#permalinkА если мне нужно вторым аргументом callback передать, как это сделать не трогая event который идет первым аргументом?
Автор: Гость (не зарегистрирован), дата: 14 декабря, 2016 - 17:55
#permalinkЛюди, помогите с такой проблемой. Есть графический объект, передвигающийся за курсором мыши. Но мне необходимо знать, куда мышь в данный момент передвигается: влево или вправо, чтобы менять этот графический объект в зависимости стороны передвижения мыши. Перекопал инет. Подобной задачи никто не решал.
Автор: Цифровой (не зарегистрирован), дата: 20 ноября, 2017 - 15:50
#permalinkНе получается отследить клики по дочерним элементам целевого элемента
Автор: Гость (не зарегистрирован), дата: 12 июня, 2018 - 21:18
#permalinkнайс, то что нужно