Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Скрипт вычисления координат объекта (https://javascript.ru/forum/events/20759-skript-vychisleniya-koordinat-obekta.html)

banderasantonio197555 16.08.2011 16:13

Скрипт вычисления координат объекта
 
Доброго всем времени суток.
Я не силен в javascript, пишу на C#.
В данный момент стоит проблема с поиском объектов в браузере на движке Awesomium.
Первая часть задачи: при наведении мыши на любой объект в браузере он должен подсвечиваться рамкой. При нажатии правой клавиши код объекта сохраняется для дальнейшей работы.
Обработку кнопки мыши и сохранение объекта я нашел как сделать:
JSValue result = webView.ExecuteJavascriptWithResult(@"document.ele mentFromPoint(" + e.X.ToString() + "," + e.Y.ToString() + ").outerHTML");

В переменной result я получаю код объекта:
<input id="mainSearchInput" type="text" class="searchStr focused" name="Ntt" autocomplete="off" placeholder="Search B&amp;H Photo, Video &amp; Pro Audio" value="">

Не решены две проблемы:
- Как подсвечивать объекты в браузере?
Нужно повесить какой то скрипт на событие MouseHover

- Как найти координаты захваченного объекта?
Есть функция getBoundingClientRect() но как ей передать объект захваченный по координатам?

Magneto 16.08.2011 17:02

Подсвечивать элементы оптимальнее всего используя CSS-правила.

Следующий код будет выделять красной рамкой абсолютно все элементы на странице:
*{
  border:1px solid transparent}

*:hover{
  border:1px solid red}


А этот только divы и таблицы:
div, table{
  border:1px solid transparent}

div:hover, table:hover{
  border:1px solid red}


Для устаревших браузеров (IE 6), нужно принудительно устанавливать подсвечивание через событие onMouseOver и снимать по событию onMouseOut.

Положение элемента на странице можно узнать через свойства (offsetLeft и offsetTop) этого элемента. Это координаты верхней левой точки элемента относительно такой же точки его родителя.

banderasantonio197555 16.08.2011 17:19

Проект будет работать только на движке Awesomium, но там все очень своеобразно :-)
Например попытался повесить ваш скрипт на событие зависания мыши над полем браузера
private void webViewBitmap_MouseHover(object sender, EventArgs e)
{
webView.ExecuteJavascript(@"div, table{
border:1px solid transparent}

div:hover, table:hover{
border:1px solid red}");
}

И к великой печали не работает ничего, скрипт отрабатывается но на экране ничего нет.

Magneto 16.08.2011 17:22

Стили нужно добавлять в файл стилей. И я не знаком с движком Awesomium поэтому хз.

banderasantonio197555 16.08.2011 17:37

Так по идее стили лежать на хостинге должны, но в моем случае не я же сайтописатель, я по сути браузер доделываю под себя.
А движок можно тут посмотреть Awesomium.com


Часовой пояс GMT +3, время: 11:05.