Javascript-форум (https://javascript.ru/forum/)
-   Internet Explorer (https://javascript.ru/forum/css-html-internet-explorer/)
-   -   Проблема с ClientX и ClientY (https://javascript.ru/forum/css-html-internet-explorer/3431-problema-s-clientx-i-clienty.html)

MaxPayne 17.04.2009 22:50

Проблема с 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;


Какие будут мысли на этот счет?

Riim 17.04.2009 22:53

Наверно этого не хватает:

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);
}

MaxPayne 17.04.2009 23:46

То есть будет правильно так:

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;

Riim 18.04.2009 06:52

У вас event, а у меня e.
Выкладывайте весь код, что бы гадать не приходилось, что там у вас не так.

MaxPayne 25.04.2009 18:53

А в чем отличие event от e?

x-yuri 26.04.2009 03:12

ни в чем
а если серьезно, то
Цитата:

Выкладывайте весь код, что бы гадать не приходилось, что там у вас не так.

MaxPayne 26.04.2009 20:58

Вопрос немного не в тот раздел, но по теме..

Необходимо найти координаты курсора мыши относительно отца цели события. Использую:
window.event.x
window.event.y
В Опере - все суперски работает. В ФФ - не хочет. Координаты определяет как undefined.
Как исправить? Есть ли кроссбраузерные решения на эту тему с использованием фреймворков?

Riim 26.04.2009 23:30

Цитата:

Сообщение от MaxPayne
Есть ли кроссбраузерные решения на эту тему с использованием фреймворков?

Есть в любом фреймворке. Читайте документацию.

Илья Кантор 26.04.2009 23:55

Как раз пишу статью про Drag&Drop, в которой вы найдете ответы на все вопросы.

Пока - сегодня выложил обновленный раздел про события, читайте про pageX/pageY.


Часовой пояс GMT +3, время: 17:04.