IE поддерживает определение координат события относительно элемента, на котором оно произошло (event.offsetX, event.offsetY).
А вот в Firefox такого нет. Между тем, мне нужно найти способ определить эти координаты в FF.
Я пытался заключить элемент в теги <layer></layer> и определять через переменные event.layerX и event.layerY. Но работает некорректно.
Мне нужно определять координаты курсора в ячейки таблицы, я делал так:
<TR>
<layer>
<TD onmouseover="showCoords(event)">Something</TD>
</layer>
</TR>
<script language="JavaScript">
function showCoords(event) {
if (typeof(event)=="undefined") event = window.event;
obj = (event.srcElement)?event.srcElement:event.target;
offsetX = (typeof(event.offsetX)!="undefined")?event.offsetX:event.layerX;
offsetY = (typeof(event.offsetY)!="undefined")?event.offsetY:event.layerY;
alert("x: " + offsetX +"; y: " + offsetY);
};
</script>
Но координаты получаются ненормально большими.
Может дело в тегах: layer не может идти после TR? Но тогда как определить координаты в ячейке?
Может кто знает способ как определить относительные координаты?
Только не советуйте, пожалуйста, функции типа:
function getObjParams(obj){
var preOx = obj.offsetLeft;
var preOy = obj.offsetTop;
while(obj.offsetParent)
{
// finds the absolute position of the object
if(obj==document.getElementsByTagName('body')[0]) {break}
else { obj=obj.offsetParent; };
preOx += obj.offsetLeft;
preOy += obj.offsetTop;
};
return {x: preOx, y: preOy, width: ((obj.width)?(obj.width):(obj.offsetWidth)), height: ((obj.height)?(obj.height):(obj.offsetHeight)) };
};
Они иногда дают ошибочный результат.