Проблема с ClientX и ClientY
Пишу на JavaScript drag and drop. В Опере и Файрфоксе работает отменно, а вот в ИЕ - вообще даже захвата не делается. Предполагаемая мной причина сей ошибки - неточность в определении необходимых координат.
Вот основная часть кода. Вроде и добавил в код расположенность к ИЕ - все равно помочь не может.
if (!event) event = window.event; // IE
this.dragStartLeft = event.clientX;
this.dragStartTop = event.clientY;
this.top = $("mini").offsetTop;
this.left = $("mini").offsetLeft;
Какие будут мысли на этот счет? |
Наверно этого не хватает:
if (e.pageX == null && e.clientX != null) {
var docElem = $d.documentElement || {}, body = $d.body || {};
e.pageX = e.clientX + (window.pageXOffset || docElem.scrollLeft || body.scrollLeft || 0) - (docElem.clientLeft || 0);
e.pageY = e.clientY + (window.pageYOffset || docElem.scrollTop || body.scrollTop || 0) - (docElem.clientTop || 0);
}
|
То есть будет правильно так:
if (e.pageX == null && e.clientX != null) {
var docElem = $d.documentElement || {}, body = $d.body || {};
e.pageX = e.clientX + (window.pageXOffset || docElem.scrollLeft || body.scrollLeft || 0) - (docElem.clientLeft || 0);
e.pageY = e.clientY + (window.pageYOffset || docElem.scrollTop || body.scrollTop || 0) - (docElem.clientTop || 0);
}
this.dragStartLeft = event.pageX;
this.dragStartTop = event.pageY;
this.top = $("mini").offsetTop;
this.left = $("mini").offsetLeft;
|
У вас event, а у меня e.
Выкладывайте весь код, что бы гадать не приходилось, что там у вас не так. |
А в чем отличие event от e?
|
ни в чем
а если серьезно, то Цитата:
|
Вопрос немного не в тот раздел, но по теме..
Необходимо найти координаты курсора мыши относительно отца цели события. Использую: window.event.x window.event.y В Опере - все суперски работает. В ФФ - не хочет. Координаты определяет как undefined. Как исправить? Есть ли кроссбраузерные решения на эту тему с использованием фреймворков? |
Цитата:
|
Как раз пишу статью про Drag&Drop, в которой вы найдете ответы на все вопросы.
Пока - сегодня выложил обновленный раздел про события, читайте про pageX/pageY. |
| Часовой пояс GMT +3, время: 00:48. |