HTML Spy

Обсуждение проектов наших жителей.
Вы можете выставить проект на тест или найти помощников для его реализации.

Модератор: BV

Odrick
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 503
Зарегистрирован: 28.09.2003 (Вс) 2:04

HTML Spy

Сообщение Odrick » 21.10.2005 (Пт) 1:11

В последнее время мне частенько приходиться исследовать HTML-страницы на предмет нахождения ID, NAME и т.д. определенных элементов. Да и вообще часто просто хочеться посмотреть как реализован тот или иной элемент страницы. При большом объеме это превращается в довольно муторное дело. В конце-концов пришла идея написать плагин для IE, который "отлавливает" клик прользователя по странице и показывает ID, NAME, тип, innerHTML и outerHTML элемента, по которому кликнули. Результат прошу посмотреть и оценить :)

Текущая версия ниже
У вас нет доступа для просмотра вложений в этом сообщении.
Последний раз редактировалось Odrick 12.01.2006 (Чт) 1:06, всего редактировалось 2 раз(а).
То, что для одних константа, для других только переменная...

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 21.10.2005 (Пт) 2:22

Прикольно. А сурс будет?
А я все практикую лечение травами...

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 21.10.2005 (Пт) 6:36

Twister писал(а):Прикольно. А сурс будет?

сОрс

достали уже сУрсы и хИдеры :twisted:
Изображение

skord
Китаец
Китаец
 
Сообщения: 572
Зарегистрирован: 14.10.2004 (Чт) 15:36
Откуда: Иркутск

Сообщение skord » 21.10.2005 (Пт) 7:04

Видел прогу типа такой же, только shareware :) .
Сделай подсветку синтаксиса и интерйейс покрасивей.

Sebas
Неуловимый Джо
Неуловимый Джо
Аватара пользователя
 
Сообщения: 3626
Зарегистрирован: 12.02.2002 (Вт) 17:25
Откуда: столько наглости такие вопросы задавать

Сообщение Sebas » 21.10.2005 (Пт) 7:43

а IE7 тулбар for Developer видели?
- Я никогда не понимал, почему они приходят ко мне чтобы умирать?

sebas<-@->mail.ru

Odrick
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 503
Зарегистрирован: 28.09.2003 (Вс) 2:04

Сообщение Odrick » 21.10.2005 (Пт) 12:22

2Twister - будет, только чуток попозже. Для начала хотелось бы услышать мнения, учесть их и довести до логического конца ;)
2tyomitch - да ладно... Сленг он и есть сленг. Меня, например, бесит, когда SQL сиквелом называют :D
2skord - да, об этом я уже думал. Только идея немного другая - сделать панельку с полным html-кодом и в нем выделять тот кусок, который относится к нужному элементу. А по поводу подсветки - никогда этим не занимался, так что прийдется порыться...
2Sebas - щас посмотрю...
То, что для одних константа, для других только переменная...

uhm
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1597
Зарегистрирован: 02.12.2004 (Чт) 15:21

Сообщение uhm » 21.10.2005 (Пт) 13:11

Посмотрел - весьма и весьма неплохо.

Вот только мысль: есть у тебя <TD>, в нем <P>, в нем <DIV>, а в нем <A>. :) Что твоя программа показывать будет, если на ссылке щелкнуть?
Быть... или не быть. Вот. В чём вопрос?

Odrick
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 503
Зарегистрирован: 28.09.2003 (Вс) 2:04

Сообщение Odrick » 21.10.2005 (Пт) 13:18

Понятия не имею :D Это уж как сам IE решит ;) Дело в том, что все это добро вытягивается из event.
То, что для одних константа, для других только переменная...

uhm
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1597
Зарегистрирован: 02.12.2004 (Чт) 15:21

Сообщение uhm » 21.10.2005 (Пт) 14:48

Я специально не проверял, но, по-моему, она покажет TD. А хотелось бы, чтобы показывало все элементы (сразу, или по очереди, или еще как-нибудь :) ).
Быть... или не быть. Вот. В чём вопрос?

Odrick
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 503
Зарегистрирован: 28.09.2003 (Вс) 2:04

Сообщение Odrick » 21.10.2005 (Пт) 15:17

Ну вот, только что проверил. Как и ожидалось, если кликать по ссылке, показывается все, что относится к ссылке. Если на TD, то все, что внутри TD. В том числе и P и A, что вполне логично, так как click приходит именно тому, на чем кликнули. И соответственно этот элемент попадает в event браузера. А если подниматься по иерархии вверх, то на сколько? Ведь так и до BODY можно добраться ;) А вообще фишка интересная. Например, сделать возможность подниматься на фиксированное количество уровней по требованию пользователя. Записываю... :D
То, что для одних константа, для других только переменная...

Odrick
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 503
Зарегистрирован: 28.09.2003 (Вс) 2:04

Сообщение Odrick » 21.10.2005 (Пт) 15:32

По поводу IE7 тулбар for Developer. Прикольная фишка, но мне не совсем понравилось - очень тяжеловесно и большинство фишек просто коряво работает. Например, выделение объекта мышкой с фреймам просто тупит - не учитывается смещение объектов относительно фрейма. Просмотр свойств на странице (как то выделение src картинок) просто бесполезно, если картинки небольшие - путь не влазит. А вот структура DOM красивенько сделана, тут ничего не скажеш. Кстати, может кто подскажет, как сделать подобную "влипающую" панельку?
То, что для одних константа, для других только переменная...

Odrick
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 503
Зарегистрирован: 28.09.2003 (Вс) 2:04

Сообщение Odrick » 28.12.2005 (Ср) 4:52

Учел все пожелания, кроме подсветки синтаксиса. Добавил парочку дополнительных фишечек (в процессе работы, оказались нужными), изменил дизайн, добавил поддержку стилей ХР. Результат вот:

Текущая версия ниже
У вас нет доступа для просмотра вложений в этом сообщении.
Последний раз редактировалось Odrick 12.01.2006 (Чт) 1:06, всего редактировалось 1 раз.
То, что для одних константа, для других только переменная...

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 28.12.2005 (Ср) 14:29

Штука полезная, дизайн симпотный. Однако предлагаю изменить концепцию.

Пусть будет отдельным приложением, а не плагином. Напимер я сейчас активно использую компонент Webbrowser, в котором нет ни тулбара ни меню "Свойства", соответственно вызвать HTMLSpy нет возможности, а мне хотелось бы посмотреть что происходит в веброузере. Советую добавить ему список открытых окон IE с выбором понравившегося и возможность прятаться в трее. Кнопки вперед-назад это неплохо, но логичней было бы видеть html-дерево на одной закладке, а Advanced Properties на другой. Или рядом.
Если есть вопросы по реализации какого-нибудь пункта, спрашивай, я уже с весны IE и MSHTML терзаю.

Баг. Если просто запустить HTMLSpy.exe из папки, то он под завязку нагружает проц.

Вроде все.

ЗЫ. Можно оставить и в виде плагина, а точнее в обоих режимах, как аська.

ЗЗЫ. Поменяй эту позорную иконку.
Лучший способ понять что-то самому — объяснить это другому.

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 28.12.2005 (Ср) 14:45

Не все :)
Манифест засунь в ресурсы, нефига ему отдельным файлом болтаться.
Install.exe - блажь. Десяток позиций в реестр можно и при запуске прописывать, а кому не нужно - уберут из тулбара кнопку.
Лучший способ понять что-то самому — объяснить это другому.

Odrick
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 503
Зарегистрирован: 28.09.2003 (Вс) 2:04

Сообщение Odrick » 28.12.2005 (Ср) 14:55

2Antonariy - согласен в приницпе почти со всем. Особенно меня напрягает, что нельзя его нормально запустить, например, как утилиту для Maxthon именно по причине, что там юзается компонента IE, а у меня определение родителя идет именно по окнам самого IE. Как это обойти пока не вижу. Разнообразные попытки отбрасывание ненужных ни к чему хорошему не привели - плагин отказывался работать, например, при запущенном Outlook :) Могу показать кусок кода, который определяет родителя, может ты что подскажеш.
Список окон пожалуй добавлю, как и работу в двух режимах.
По поводу дерева - не хочется юзать ничего лишнего. Я имею в виду mscomctl.ocx и иже с ними, чтобы потом не пришлось их за собой таскать...
По поводу иконки - каюсь, ну не умею я рисовать... Да и иконки на форме тоже стащены с Alcohol :oops:
То, что для одних константа, для других только переменная...

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 28.12.2005 (Ср) 16:27

Особенно меня напрягает, что нельзя его нормально запустить, например, как утилиту для Maxthon именно по причине, что там юзается компонента IE, а у меня определение родителя идет именно по окнам самого IE. Как это обойти пока не вижу. Разнообразные попытки отбрасывание ненужных ни к чему хорошему не привели - плагин отказывался работать, например, при запущенном Outlook Могу показать кусок кода, который определяет родителя, может ты что подскажеш.

Не врубился в смысл проблемы. Не знаешь как получить окно ie, например из webbrowser'a другой проги, или что?
По поводу дерева - не хочется юзать ничего лишнего. Я имею в виду mscomctl.ocx и иже с ними, чтобы потом не пришлось их за собой таскать...

Ты делаешь инструмент для конкретной работы или участвуешь в конкурсе на минимальное использование контролов? Я считаю дерево удобным инструментом, гораздо полезнее, чем "сделать панельку с полным html-кодом и в нем выделять тот кусок, который относится к нужному элементу". Тем более, если этот кусок чем-нибудь сгенерен, то он будет не очень читаем. Хотя лучше оставить и то и другое.
По поводу иконки - каюсь, ну не умею я рисовать... Да и иконки на форме тоже стащены с Alcohol

Значит, нужно и ее откуда-нибудь стащить :D
Последний раз редактировалось Antonariy 28.12.2005 (Ср) 16:50, всего редактировалось 1 раз.
Лучший способ понять что-то самому — объяснить это другому.

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 28.12.2005 (Ср) 16:45

Иконка, по-быстрому в фотошопе набросал. :wink:
У вас нет доступа для просмотра вложений в этом сообщении.
Лучший способ понять что-то самому — объяснить это другому.

Odrick
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 503
Зарегистрирован: 28.09.2003 (Вс) 2:04

Сообщение Odrick » 28.12.2005 (Ср) 17:27

Antonariy писал(а):Не врубился в смысл проблемы. Не знаешь как получить окно ie, например из webbrowser'a другой проги, или что?


Смотри. Сейчас при запуске плагина происходит следующее:
1 - с помощью GetForegroundWindow определяется hwnd верхнего окна.
2 - перебираются все объекты IE, запущенные в данный момент.
3 - сравниваются их hwnd с полученным ранее. Если такой найден, форма прилепливается на это окно и плагин мониторит именно документ этого окна

Microsoft Web Browser Control, с которым работает тот же Maxthon или Outlook, есстессно hwnd не имеют. Поэтому идентифицировать, что плагин запущен из под них не получается.

Возможно, это придумано рогато, но другого что-то на ум не приходит...

Antonariy писал(а):Ты делаешь инструмент для конкретной работы или участвуешь в конкурсе на минимальное использование контролов? Я считаю дерево удобным инструментом, гораздо полезнее, чем "сделать панельку с полным html-кодом и в нем выделять тот кусок, который относится к нужному элементу". Тем более, если этот кусок чем-нибудь сгенерен, то он будет не очень читаем. Хотя лучше оставить и то и другое.


Не спорю. Ладно, что-то придумаю. Возможно сегодня попытаюсь реализовать такое дерево. Правда это кусок работы тот еще будет. Как минимум не стоит забывать о фреймах ;)

За иконку спасибо - немножко подправлю и буду использовать :D
То, что для одних константа, для других только переменная...

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 28.12.2005 (Ср) 18:04

Смотри. Сейчас при запуске плагина происходит следующее:

Понял. Нужный тебе пример я как-то уже выкладывал, но мне не лень еще раз.
Возможно сегодня попытаюсь реализовать такое дерево. Правда это кусок работы тот еще будет.

Не вижу сложностей. У меня уже полно всяких процедур для прочесывания MSHTML, а что до фреймов -
Код: Выделить всё
<html>
    <frameset>
        <frame>
            <html></html>
        </frame>
        <frame></frame>
    </frameset>
</html>
Идея понятна?
За иконку спасибо - немножко подправлю и буду использовать

На здоровье. Имей ввиду, она тройная - 16, 32 и 48.
У вас нет доступа для просмотра вложений в этом сообщении.
Лучший способ понять что-то самому — объяснить это другому.

Odrick
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 503
Зарегистрирован: 28.09.2003 (Вс) 2:04

Сообщение Odrick » 28.12.2005 (Ср) 18:19

Да, у меня есть этот пример, конечно. Ну вот теперь рассмотрим класс IE_Class, свойство IEctl а именно процедуру присваивания этому свойству значения в классе. На строке

mvarIEHandle = IncomeIE.hwnd

есстественно пример падает при запущенном Maxthon с Automation Error, так как веббраузерный контрол не имеет hwnd. Вот у меня та же фигня.
По поводу дерева - не желаеш присоединиться к этому мини-проекту и сделать формочку с выводом структуры документа? Дабы не изобретать велосипед, если у тебя уже все готово. Если надумаеш, пиши на мыло odrick@mail.ru или стучись в асю: 262867243
То, что для одних константа, для других только переменная...

Odrick
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 503
Зарегистрирован: 28.09.2003 (Вс) 2:04

Сообщение Odrick » 29.12.2005 (Чт) 1:51

:D Спасибо, конечно. Только это давно уже извесно и именно так у меня и происходит перебор всех окон IE ;) Только повторюсь еще раз - Microsoft Web Browser Control, который юзается, например Outlook или Maxthon, не имеет hwnd, который нужен для привязки окна плагина к окну вызывающего приложения. Есть однако одна идея, и похоже она уже работает...
То, что для одних константа, для других только переменная...

Odrick
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 503
Зарегистрирован: 28.09.2003 (Вс) 2:04

Сообщение Odrick » 29.12.2005 (Чт) 4:38

2Antonariy - не хочу показать наглым, но ты не мог бы свою иконку перерисовать в формате 32х32 и желательно еще в 16х16? А то при сжатии качество теряется ужасно... А так иконка прикольная - уже вставил ;)
То, что для одних константа, для других только переменная...

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 29.12.2005 (Чт) 11:27

нужен для привязки окна плагина к окну вызывающего приложения

Зачем? Нужно всего лишь получить document. Вон, FleX_2004 одним махом отделил зерна от плевел. А для большей наглядности, в примере IEcontrol убери все упоминания про hwnd и он заработает. Я даже не поленился и установил этот самый Maxthon. В классе cIEWindows в Add убираешь ключ из mCol.Add objNewMember, CStr(objNewMember.IEHandle), а в форме в процедуре UpdateIEList так же избавляешься от ключа в Set itmx = lv.ListItems.Add(, "K" & CStr(tmpIE.IEHandle), tmpIE.IEctl.LocationName). Не будут работать кнопки управления окнами, но нам ведь этого и не надо.
Лучший способ понять что-то самому — объяснить это другому.

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 29.12.2005 (Чт) 11:39

2Antonariy - не хочу показать наглым, но ты не мог бы свою иконку перерисовать в формате 32х32 и желательно еще в 16х16? А то при сжатии качество теряется ужасно... А так иконка прикольная - уже вставил

Я ж говорю, она 3 в 1. Посмотри в экплорере в виде списка, плитки и значков - отображается соответствующий размер.
не желаеш присоединиться к этому мини-проекту и сделать формочку с выводом структуры документа?

Ок.
У вас нет доступа для просмотра вложений в этом сообщении.
Лучший способ понять что-то самому — объяснить это другому.

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 29.12.2005 (Чт) 13:02

Вот. Дерево + спиок всех окон, где есть document. Проверено на макстоне. :wink:
Фреймы пока отдохнут. Та идея, что я предложил, не очень хороша, нужно что-то другое.
У вас нет доступа для просмотра вложений в этом сообщении.
Лучший способ понять что-то самому — объяснить это другому.

Odrick
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 503
Зарегистрирован: 28.09.2003 (Вс) 2:04

Сообщение Odrick » 29.12.2005 (Чт) 14:01

Зачем? Нужно всего лишь получить document

Для мониторинга - да. Для нормальной работы с плагином - нет :) Сейчас окно прилепливается поверху окна IE для удобства. Если этого не делать, прийдется после каждого клика по документу возвращаться в свое окно. Что не совсем удобно ;) Впрочем проехали. Это я уже кое-как решил. Теперь такой вот вопрос... Нельзя ли как-нибуть узнать hwnd родителя, имея только объект Microsoft Web Browser Control?..
Я ж говорю, она 3 в 1. Посмотри в экплорере в виде списка, плитки и значков - отображается соответствующий размер.

Провтыкал :)
Вот. Дерево + спиок всех окон, где есть document.

О, спасибо. Сейчас посмотрю...
То, что для одних константа, для других только переменная...

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 29.12.2005 (Чт) 14:33

Если не получилось выдрать IncomeIE.hwnd, можешь через IncomeIE.FullName выяснить название программы, по имени найти ее среди процессов, из процесса вытащить hwnd основного окна. Перебрать деток и найти по имени класса - Internet Explorer_Server
Лучший способ понять что-то самому — объяснить это другому.

След.

Вернуться в Наши проекты

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex-бот и гости: 5

    TopList