>Форум Mozilla Россия http://forum.mozilla-russia.org/index.php >Разработка http://forum.mozilla-russia.org/viewforum.php?id=18 >Как найти экранные координаты картинки? http://forum.mozilla-russia.org/viewtopic.php?id=3841 |
O.Nick > 05-07-2005 09:02:15 |
Пишу расширение. Никак не могу найти способа, как определить экранные координаты нужного мне элемента.
выдает undefined |
Lynn > 05-07-2005 10:49:35 |
А что говорит alert(element) ? ЗЫ. Я в написании расширений ничего не знаю. |
O.Nick > 05-07-2005 10:58:32 |
В зависимости от того, что за элемент, выдаются разные варианты. Для картинки - object HTMLImageElement, для текстового поля - object HTMLInputElement. |
Lynn > 05-07-2005 11:58:56 |
Вообще-то у HTMLных объектов никакого boxObject'а нет. PS. Есть такая полезная штука: DOM Inspector. |
O.Nick > 05-07-2005 12:30:55 |
Спасибо за наводку. Пока сделал так
Но все равно есть погрешность - не учитывается расстояние от левой верхней точки браузера до левой верхней точки клиентской области (контента). Как его найти - не знаю... |
O.Nick > 05-07-2005 14:00:41 |
Нашел еще одну ошибку (или проблему) - если использовать offsetTop/Left/Parent, то не учитывается скроллинг. По идее нужно поправить так
Но фишка в том, что как бы я не скролил сайт - window.scrollX и window.scrollY всегда по нулям. |
cr@nk > 19-11-2005 06:38:17 |
Где его взять? Он же по умолчанию ставится? |
Snik > 19-11-2005 13:02:10 |
cr@nk |
igorsub > 19-11-2005 19:10:42 |
Может в этом расширении ты сможешь найти нужный код. |
Aerina > 14-04-2006 12:29:43 |
А случайно никто не разобрался почему window.scrollX всегда равно 0? Если пытаться его получить в своем плагине, то все нормально. А как найти положение скрола из расширения - не могу понять. |
Mash > 14-04-2006 13:25:52 |
document.body.scrollLeft, document.body.scrollTop? |
Anton > 14-04-2006 14:53:44 |
Наверное, потому что у окна (корневой элемент <window> файла browser.xul) нет полос прокрутки, т. е., дочерние xul-элементы окна при переполнении "обрезаются". Полосы прокрутки есть у html-документа, так что |
Aerina > 14-04-2006 16:28:38 |
Большое спасибо Mash: - прошло. Но у меня была еще проблема в том, что надо было получить эти координаты в компоненте. переклинило меня и не подумала, что могу сделать так: Выделить код Код: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-элементами. |
Aerina > 14-04-2006 16:35:40 |
Кстати в связи со всем этим разбирательство возникла такая проблема. В начале пыталась так: Выделить код Код: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)) ? Так и не разобаралась. Интересно - может кто-то знает в чем дело? |