Как определить координаты объекта в IE
От: DSD Россия http://911.ru/cv
Дата: 04.01.03 14:50
Оценка: 8 (3)
#Имя: FAQ.web.getcoords
Здравствуйте, Аноним, Вы писали:

А>Как определить координаты объекта (картинки, таблицы, ячейки) относительно окна.


В IE это можно сделать вот этими двумя функциями:

  function GetAbsTop(_obj) {
     var _top=0;
     var _parent=_obj;
         _top+=_parent.offsetTop;
         _top+=_parent.clientTop;
     do {
         _parent=_parent.offsetParent;
         _top+=_parent.offsetTop;
         _top+=_parent.clientTop;
     } while (_parent!==document.body);
     return _top-document.body.scrollTop;
  }

  function GetAbsLeft(_obj) {
     var _left=0;
     var _parent=_obj;
         _left+=_parent.offsetLeft;
         _left+=_parent.clientLeft;
     do {
         _parent=_parent.offsetParent;
         _left+=_parent.offsetLeft;
         _left+=_parent.clientLeft;
     } while (_parent!==document.body);
     return _left-document.body.scrollLeft;
  }



Передаешь свой обьект(картинку, таблицу, ячейку) параметром _obj, и оно тебе выдаст координату Top или Left относительно окна.

А можно чуть модифицировать для производительности(обе координаты за один проход цикла):

  function GetAbsCoords(_obj) {
     var _top=0;
     var _left=0;
     var _parent=_obj;
         _top+=_parent.offsetTop;
         _top+=_parent.clientTop;
         _left+=_parent.offsetLeft;
         _left+=_parent.clientLeft;
     do {
         _parent=_parent.offsetParent;
         _top+=_parent.offsetTop;
         _top+=_parent.clientTop;
         _left+=_parent.offsetLeft;
         _left+=_parent.clientLeft;
     } while (_parent!==document.body);
     return [_top-document.body.scrollTop, _left-document.body.scrollLeft];
  }


тогда к примеру:


  var MyTableCoords = GetAbsCoords(MyTable);
  var MyTableAbsTop = MyTableCoords[0];
  var MyTableAbsLeft = MyTableCoords[1];
--
DSD
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.