Val Petruchek

подписывайтесь, а то хуже будет!  

ПОДПИСЫВАЙТЕСЬ НА RSS

« Я — PHP-программист!
Список хронофагов »

JavaScript: получение абсолютных координат элемента

15.02.07 @ 22:44 — Programming, JavaScript

Вот такая изящная функция для опреления абсолютных координат элемента:

function getAbsolutePos(el)
	{
	var r = { x: el.offsetLeft, y: el.offsetTop };
	if (el.offsetParent)
		{
		var tmp = getAbsolutePos(el.offsetParent);
		r.x += tmp.x;
		r.y += tmp.y;
		}
	return r;
	}

8 Comments »

  1. работает не правильно, если на одном из элементов прокручен скроллбар..

    Comment by dzone — 07.11.2007 @ 18:00

  2. Вся соль, как всегда, в определениях. Что значит “правильно” и “неправильно”, по-вашему?

    Comment by Val Petruchek — 11.11.2007 @ 17:31

  3. var getRect = (function(){
    if (document.getBoxObjectFor)
    return function(e){
    var b = document.getBoxObjectFor(e);
    // alert(b.x+” , “+b.x+b.width+” , “+b.y+” , “+b.y+b.height);
    return [b.x, b.x+b.width, b.y, b.y+b.height];
    }
    if (document.body.getBoundingClientRect)
    return function(e){
    var b = e.getBoundingClientRect(), s = getScroll();
    //alert(b.left+” , “+b.right+” , “+b.top+” , “+b.bottom);
    return [b.left+s[0], b.right+s[0], b.top+s[1], b.bottom+s[1]];
    }
    return function(e){
    var x=0, y=0, w=e.offsetWidth, h=e.offsetHeight, s = getScroll();
    for(; e!=null; e = e.offsetParent){
    x += e.offsetLeft;
    y += e.offsetTop;
    }
    // alert(x+” , “+y);
    return [x+s[0], x+w+s[0], y+window.screenTop+s[1], y+h+window.screenTop+s[1]];
    }
    })()

    Comment by lemur — 29.05.2008 @ 11:32

  4. на IE не работает

    Comment by Михаил — 06.11.2009 @ 03:28

  5. А на IE не работает скорее всего из-за скобок… попробуй

    Comment by Truin — 07.07.2010 @ 11:33

  6. А на IE не работает скорее всего из-за скобок… попробуй

    Comment by Truin — 07.07.2010 @ 11:33

  7. А на IE не работает скорее всего из-за скобок… попробуй

    Comment by Truin — 07.07.2010 @ 11:33

  8. див:

    получение координат (включая IE):
    var ex=0, ey=0;

    function A(mEvent)
    {
    if (typeof(mEvent)==”undefined”) mEvent = window.event;
    obj = (mEvent.srcElement)?mEvent.srcElement:mEvent.target;

    ex = (typeof(mEvent.offsetX)!=”undefined”)?mEvent.offsetX:mEvent.layerX;
    ey = (typeof(mEvent.offsetY)!=”undefined”)?mEvent.offsetY:mEvent.layerY;

    document.getElementById(”vvv”).innerHTML=” “+kart+”: x= “+ex+” ; y= “+ey;
    };

    Comment by D_A_N — 15.12.2010 @ 07:36

RSS feed for comments on this post. TrackBack URI

Leave a comment

  
Реклама::

 
Реклама::