Здравствуйте, Аноним, Вы писали:
А>Как определить координаты объекта (картинки, таблицы, ячейки) относительно окна.
В 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];