Полезная информация

Заказывай стафф с атрибутикой Mozilla и... пусть все вокруг завидуют тебе! Быть уникальным - быть с Mozilla!

№105-07-2005 09:02:15

O.Nick
Участник
 
Группа: Members
Откуда: Москва
Зарегистрирован: 19-05-2005
Сообщений: 106
Веб-сайт

Как найти экранные координаты картинки?

Пишу расширение. Никак не могу найти способа, как определить экранные координаты нужного мне элемента.
Вариант

var element = window._content.document.getElementById (knownID);
//alert (element.boxObject.screenX);
alert (element.boxObject);

выдает undefined
Подскажите, пожалуйста, другие варианты (или скажите, где ошибка в этом фрагменте).

Отсутствует

 

№205-07-2005 10:49:35

Lynn
Кофеман
 
Группа: Members
Откуда: Россия
Зарегистрирован: 16-02-2005
Сообщений: 1721
Веб-сайт

Re: Как найти экранные координаты картинки?

А что говорит alert(element) ?

ЗЫ. Я в написании расширений ничего не знаю. :rolleyes:


Isn't it ironic... don't you think? — Alanis Morissette

Отсутствует

 

№305-07-2005 10:58:32

O.Nick
Участник
 
Группа: Members
Откуда: Москва
Зарегистрирован: 19-05-2005
Сообщений: 106
Веб-сайт

Re: Как найти экранные координаты картинки?

В зависимости от того, что за элемент, выдаются разные варианты. Для картинки - object HTMLImageElement, для  текстового поля - object HTMLInputElement.

Отсутствует

 

№405-07-2005 11:58:56

Lynn
Кофеман
 
Группа: Members
Откуда: Россия
Зарегистрирован: 16-02-2005
Сообщений: 1721
Веб-сайт

Re: Как найти экранные координаты картинки?

Вообще-то у HTMLных объектов никакого boxObject'а нет.
Так что по старинке ручками при помощи offsetTop/Left/Parent.

PS. Есть такая полезная штука: DOM Inspector.


Isn't it ironic... don't you think? — Alanis Morissette

Отсутствует

 

№505-07-2005 12:30:55

O.Nick
Участник
 
Группа: Members
Откуда: Москва
Зарегистрирован: 19-05-2005
Сообщений: 106
Веб-сайт

Re: Как найти экранные координаты картинки?

Спасибо за наводку. Пока сделал так

function GetClientX (element)
{
  var result = 0;
  if (element.offsetParent != null)
   result = GetClientX (element.offsetParent);
  result += element.offsetLeft;

  return result;
}

function GetClientY (element)
{
  var result = 0;
  if (element.offsetParent != null)
   result = GetClientY (element.offsetParent);
  result += element.offsetTop;

  return result;
}

var element = window._content.document.getElementById (knownID);
var x = window.screenX + GetClientX (element);
var y = window.screenY + GetClientY (element);

Но все равно есть погрешность - не учитывается расстояние от левой верхней точки браузера до левой верхней точки клиентской области (контента). Как его найти - не знаю...

Отсутствует

 

№605-07-2005 14:00:41

O.Nick
Участник
 
Группа: Members
Откуда: Москва
Зарегистрирован: 19-05-2005
Сообщений: 106
Веб-сайт

Re: Как найти экранные координаты картинки?

Нашел еще одну ошибку (или проблему) - если использовать offsetTop/Left/Parent, то не учитывается скроллинг. По идее нужно поправить так

var x = window.screenX + GetClientX (element) - window.scrollX;
var y = window.screenY + GetClientY (element) - window.scrollY;

Но фишка в том, что как бы я не скролил сайт - window.scrollX и window.scrollY всегда по нулям.

Отсутствует

 

№719-11-2005 06:38:17

cr@nk
Участник
 
Группа: Extensions
Откуда: Челябинск
Зарегистрирован: 03-04-2005
Сообщений: 1412

Re: Как найти экранные координаты картинки?

PS. Есть такая полезная штука: DOM Inspector.

Где его взять? Он же по умолчанию ставится?

Отсутствует

 

№819-11-2005 13:02:10

Snik
Участник
 
Группа: Members
Зарегистрирован: 27-04-2005
Сообщений: 425
Веб-сайт

Re: Как найти экранные координаты картинки?

cr@nk
Он по умолчанию теперь не ставится, хотя и есть в поставке. Надо делать выборочную установку и отметить опцию DOM Inspector.

Отсутствует

 

№919-11-2005 19:10:42

igorsub
бедняжечка бедняжная
 
Группа: Extensions
Откуда: Мурманск
Зарегистрирован: 03-04-2005
Сообщений: 6373
Веб-сайт

Re: Как найти экранные координаты картинки?

Может в этом расширении ты сможешь найти нужный код.
http://www.extensionsmirror.nl/index.php?showtopic=2020


От оно че!

Отсутствует

 

№1014-04-2006 12:29:43

Aerina
Участник
 
Группа: Extensions
Откуда: Киев
Зарегистрирован: 30-01-2006
Сообщений: 41

Re: Как найти экранные координаты картинки?

А случайно никто не разобрался почему window.scrollX всегда равно 0? Если пытаться его получить в своем плагине, то все нормально. А как найти положение скрола из расширения - не могу понять.
Подскажите пожалуйста, бо очень срочная работа.:cry:

Отсутствует

 

№1114-04-2006 13:25:52

Mash
Участник
 
Группа: Extensions
Зарегистрирован: 09-04-2005
Сообщений: 620
Веб-сайт

Re: Как найти экранные координаты картинки?

document.body.scrollLeft, document.body.scrollTop?

Отсутствует

 

№1214-04-2006 14:53:44

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
Веб-сайт

Re: Как найти экранные координаты картинки?

...почему window.scrollX всегда равно 0?...

Наверное, потому что у окна (корневой элемент <window> файла browser.xul) нет полос прокрутки, т. е., дочерние xul-элементы окна при переполнении "обрезаются".

Полосы прокрутки есть у html-документа, так что

Выделить код

Код:

window. getBrowser (). contentWindow. scrollX

Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

№1314-04-2006 16:28:38

Aerina
Участник
 
Группа: Extensions
Откуда: Киев
Зарегистрирован: 30-01-2006
Сообщений: 41

Re: Как найти экранные координаты картинки?

Большое спасибо Mash:

Выделить код

Код:

window.content.document.body.scrollLeft

- прошло.

Но у меня была еще проблема в том, что надо было получить эти координаты в компоненте. переклинило меня и не подумала, что могу сделать так:

Выделить код

Код:

nsCOMPtr<nsIDOMHTMLDocument> htmlDoc(do_QueryInterface(doc, &rv));

   nsIDOMHTMLElement*  aBody;
   rv = htmlDoc->GetBody(&aBody);
   if (!NS_SUCCEEDED(rv)) return false;

   nsCOMPtr<nsIDOMNSHTMLElement> element_sc(do_QueryInterface(aBody, &rv));

   int iXsc,iYsc;
   element_sc->GetScrollLeft(&iXsc);
   element_sc->GetScrollTop(&iYsc);

и все получилось. А то совсем с этим скролом замучалась...

Anton  ого не знала, что такое бывает с xul-элементами.

Отсутствует

 

№1414-04-2006 16:35:40

Aerina
Участник
 
Группа: Extensions
Откуда: Киев
Зарегистрирован: 30-01-2006
Сообщений: 41

Re: Как найти экранные координаты картинки?

Кстати в связи со всем этим разбирательство возникла такая проблема. В начале пыталась так:

Выделить код

Код:

nsIDOMElement* elem_doc;  
   rv = doc->GetDocumentElement(&elem_doc);
   if (!NS_SUCCEEDED(rv)) return false;

   nsCOMPtr<nsIDOMNSHTMLElement> element_sc(do_QueryInterface(elem_doc, &rv));
   if (!NS_SUCCEEDED(rv)) return false;

   int iXsc,iYsc;
   element_sc->GetScrollLeft(&iXsc);
   element_sc->GetScrollTop(&iYsc);

возвращались правильные значения, но потом клинило весь остальной код и работающая программа отказывалась выполнять любые действия. Поэтому пошла другим путем (описан в предыдущем посте).

Может ей мешало: element_sc(do_QueryInterface(elem_doc, &rv)) ?

Так и не разобаралась. Интересно - может кто-то знает в чем дело?

Отсутствует

 

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2020 Mozilla Russia GitHub mark
Язык отображения форума: [Русский] [English]