![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вопрос по фреймам [D6, WinXP]
Free_Breeze © (2006-10-27 17:33:00)Дано: форма с WebBrowser в который загружается страничка с фреймами (типа чата на java-скрипте)
Задача такова: необходимо програмно вставлять в ListBox содержимое текста (не HTML, а то что генерится скриптом, в случае с примером - список людей находящийся в чате) из определенного фрейма.
Условия: обращение на прямую к фрейму и выполнение комнд "выделить все", "Copy" не катят, так как теряется управление с другого фрейма (в котором может производится какое-то действие, работа с тем же контекстным меню), а программа должна работать в фоне и не переключать фокус на фрейм со списком.
Кому-нибудь под силу решение данной проблемы???
DiamondShark (2006-10-29 12:54:00) [1]никакого html в innerText уже не будет, будет только видимый текст, полный, но менее трансректальный аналог [11].
да и если возникнет необходимость html разбирать, то он уже лежит разобраный в виде объектной модели документа.
в общем, вариантов много. пёс знает, как там этот чат устроен.
а самый правильный ответ уже был: вникать в справку по DOM и смотреть, что можно удобнее использовать в данном конкретном случае.
Орион (2006-10-29 12:19:00) [2]> [19] Free_Breeze (28.10.06 03:42)
Сначала [21] потом регулярные выражения (распарсиваешь html и выбираешь нужные куски).
DiamondShark (2006-10-29 12:10:00) [3]
> потому что как скопировать содержимое фрейма без выделения
> так и не нашел
фрейм.document.body.innerText
Ketmar (2006-10-28 03:45:00) [4]а ты не в ту конференцию влез. это в "начинающим" надо было. попробуй перепостить. не забудь в бубен постучать (чтобы модераторы не снесли оба вопроса).
Free_Breeze (2006-10-28 03:42:00) [5]Люди! Ну подскажите пожалуйста, кто знает решение проблемы. Просто у меня очень мало времени.
Ketmar (2006-10-27 21:13:00) [6]>[17] Free_Breeze 27-Oct-2006, 21:03
>> во-первых: у меня ася не работает. %-)
>у меня тоже до сегодня не работала, пока нового клиента не
>скачал и не переустановил
у меня завсегда последняя Миранда. development. %-)
>дык я и не встраиваю.
я к тому, что во взаимодействии с IE я -- профан. DiamondShark вот знает. но его фиг заманишь. %-)
Free_Breeze (2006-10-27 21:03:00) [7]
> во-первых: у меня ася не работает. %-)
у меня тоже до сегодня не работала, пока нового клиента не скачал и не переустановил
> я IE не встрою в свои программы и под угрозой вечного отлучения
> от инета
дык я и не встраиваю. в том-то и дело, что я над чужим клиентом издеваюсь... а чатовскому скрипту вообще команды отдает флешка из первого фрейма... вот как все запущено...
Ketmar (2006-10-27 20:55:00) [8]это я к тому, что я вообще не знаю, как и что там в IE. так, осколки того, что видел в форумах, не более.
Ketmar (2006-10-27 20:54:00) [9]>[14] Free_Breeze 27-Oct-2006, 20:45
>может проще было бы по аське пообщаться? слишком уж тут
>долго выходит... моя если что 148491735
во-первых: у меня ася не работает. %-)
во-вторых: с такими вопросами не ко мне. я IE не встрою в свои программы и под угрозой вечного отлучения от инета. %-) я с IE просто не дружу.
Free_Breeze (2006-10-27 20:45:00) [10]может проще было бы по аське пообщаться? слишком уж тут долго выходит... моя если что 148491735
Free_Breeze (2006-10-27 20:43:00) [11]потому и уходит, что я криво это все делаю:
программно перехожу в нужный фрейм, выделяю текст, копирую выделенный текст (потому что как скопировать содержимое фрейма без выделения так и не нашел), и снимаю селект.
затем сюда и обратился, что кроме как криво все это обработать у меня ничего не вышло...
Ketmar (2006-10-27 20:36:00) [12]а нафига "select all" делать? и вообще таким странным образом всё? вот и уходит.
Free_Breeze (2006-10-27 20:33:00) [13]ну я сам-то уже кое-чего добился, но у меня проблема с тем, что фокус переходит в фрейм со списком, и получается, если клиент набирает текст, а с проги пошел запрос, то текст перестает набираться...
а реализовал я свой вариант примерно так:
WebBrowser.OleObject.Document.frames.item(2).document.execCommand('SelectAll',fa lse,emptyparam) ;
u:=Webbrowser.OleObject.Document.frames.item(2).document.Selection.createRange.T ext;
WebBrowser.OleObject.Document.frames.item(2).document.execCommand('Unselect',fal se,emptyparam) ;
ListBox1.Items.Text:=u;
Это работает, но как вернуть фокус туда, где он был до начала обработки я так и не разобрался... Свой вариант мне не нравится, вот потому и решил спросить совета...
Ketmar (2006-10-27 20:16:00) [14]точка перед document одна. %-)
Ketmar (2006-10-27 20:16:00) [15]тогда нечто наподобие
webbrowser1..Document as IHTMLDocument2).images.item('my_img', 0) as IHTMLImgElement
ну, ты понял, думаю, куда копать.
Free_Breeze (2006-10-27 20:12:00) [16]Спасибо. На счет своего клиента - просто никак. Просто это будет плагин для уже готового игрового клиента, в котором присутствует чат. потому и такие проблемы...
Ketmar (2006-10-27 20:07:00) [17]>[6] Free_Breeze 27-Oct-2006, 20:01
искать на предмет IE DOM model. или написать полностью своего клиента для чата (как делаю обычно я %-).
>Я ведь ждал подсказки, а не цитату из моего-же вопроса.
http://ln.com.ua/~openxs/articles/smart-questions-ru.html
читать до просветления.
Free_Breeze (2006-10-27 20:01:00) [18]Попробую описать задачу повнятней.
Есть WebBrowser в который загружена страница с 3 фреймами. Первый мне не интересен. Во втором окно чата на скрипте (окно с сообщениями и строка ввода). В третьем фрейме список людей находящихся в чате.
Этот список постоянно меняется и мне необходимо отслеживать изменение списка. При выполнении задачи фокус не должен уходить из второго фрейма (строки ввода текста для чата). А результат работы (список людей в чате) желательно поместить в ListBox для дальнейшей обработки. Список людей тоже обновляется чатовским скриптом.
На счет "слабо" - ну сорвался... Можно было просто попросить сразу уточнить задачу. Я ведь ждал подсказки, а не цитату из моего-же вопроса.
Ketmar (2006-10-27 19:27:00) [19]"на слабо" -- это понты.
невнятное описание задачи -- это провокация.
неверная конференция -- это контрольный выстрел.
Free_Breeze (2006-10-27 19:16:00) [20]
> не слабо. но после дешёвых понтов -- неохота
где понты-то? я по человечески попросил помощи, а в ответ...
Товарищи, если кто может помочь, пишите пожалуйста по теме, не надо засорять топик.