Найти X / Y элемента HTML с помощью JavaScript [duplicate]

Какое большое недоразумение между событиями и делегатами !!! Делегат задает тип TYPE (например, class или interface), тогда как событие является просто своего рода членом (например, полями, свойствами и т. Д.). И, как и любой другой член, событие имеет тип. Тем не менее, в случае события тип события должен быть указан делегатом. Например, вы НЕ МОЖЕТ объявлять событие типа, определенного интерфейсом.

В заключение мы можем сделать следующее наблюдение: тип события ДОЛЖЕН быть определен делегатом. Это основное отношение между событием и делегатом и описано в разделе II.18 Определение событий разделов I-VI ECMA-335 (CLI): :

При типичном использовании TypeSpec (если присутствует) идентифицирует делегата, чья подпись соответствует аргументам, переданным методу пожара события.

blockquote>

Однако этот факт НЕ означает, что событие использует резервную копию поле делегата. По правде говоря, событие может использовать поле поддержки любого другого типа структуры данных по вашему выбору. Если вы явно реализуете событие на C #, вы можете выбрать способ хранения обработчиков событий (обратите внимание, что обработчики событий являются экземплярами типа события, который, в свою очередь, является мандатным типом делегата --- из предыдущего наблюдения ). Но вы можете хранить эти обработчики событий (которые являются экземплярами делегатов) в структуре данных, такой как List или Dictionary или любое другое другое, или даже в поле делегирования поддержки. Но не забывайте, что не обязательно использовать поле делегата.

37
задан Peter Mortensen 3 February 2011 в 18:58
поделиться

4 ответа

Вот то, как я делаю это:

// Based on: http://www.quirksmode.org/js/findpos.html
var getCumulativeOffset = function (obj) {
    var left, top;
    left = top = 0;
    if (obj.offsetParent) {
        do {
            left += obj.offsetLeft;
            top  += obj.offsetTop;
        } while (obj = obj.offsetParent);
    }
    return {
        x : left,
        y : top
    };
};
31
ответ дан Andrew Hedges 3 February 2011 в 18:58
поделиться

Это может быть хитро в зависимости от браузера и версии. Я предложил бы использовать jQuery и плагин положений.

8
ответ дан palehorse 3 February 2011 в 18:58
поделиться

Можно пользоваться библиотекой, такой как Прототип или jQuery, или можно использовать эта удобная функция :

Это возвращает массив.

myPos = findPos(document.getElementById('something'))
x = myPos[0]
y = myPos[1]

function findPos(obj) {
  var curleft = curtop = 0;
  if (obj.offsetParent) {
    curleft = obj.offsetLeft
    curtop = obj.offsetTop
    while (obj = obj.offsetParent) {
      curleft += obj.offsetLeft
      curtop += obj.offsetTop
    }
  }
  return [curleft,curtop];
}
5
ответ дан Zayn Ali 3 February 2011 в 18:58
поделиться

Я не уверен, для чего Вы нуждаетесь в нем, и такие вещи всегда относительны (экран, окно, документ). Но когда я должен был понять это, я нашел этот сайт полезным: http://www.mattkruse.com/javascript/anchorposition/source.html

И я также нашел, что плагин подсказки, который кто-то сделал для jQuery, имел все виды интересного понимания к x, y располагающие приемы (посмотрите на его класс области просмотра и базовую поддержку, jQuery предусматривает его). http://bassistance.de/jquery-plugins/jquery-plugin-tooltip/

-1
ответ дан wulimaster 3 February 2011 в 18:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: