Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.07.25;
Скачать: CL | DM;

Вниз

TEmbeddedWB. Плиз, мастера, помогите!!!   Найти похожие ветки 

 
BlackSun   (2002-07-11 00:12) [0]

В своей проге использую компонент TEmbeddedWB.
Есть Html-файл с фреймом, в котором выполняется Java скрипт. Суть его заключается в том, что через некоторое время он меняет текст во фрейме . Так вот вопрос. Как мне отловить событие, что этот скрипт сработал и текст поменялся?


 
BlackSun   (2002-07-11 04:23) [1]

Никто что-ли не знает? Позарез нужно!


 
int64 ©   (2002-07-11 07:16) [2]

Непонятно, где выполняется скрипт во фрейме или HTML файле.

Могу посоветовать тебе вставить в скрипт процедуру, которая и будет маяковать.

И покажи на всякий случай сам скрипт.


 
BlackSun   (2002-07-11 07:33) [3]

Скрипт выполняется во фрейме.
Вот пример скрипта, сразу оговорюсь, менять я его не могу, т.к. он грузится с сайта в инете, к которому я доступ не имею.

function loading(n,c,q,w) {
stoptimer();

question = q;
lastvisit = n;
choices.innerHTML = "<h3><br>Loading...</h3>";
tmr = setTimeout("timeout()", w);
}
Проходит определенное время и
function timeout() {
choices.innerHTML = "<a href="javascript...">Timeout</a>";
top.focus();
}
Вот мне и нужно узнать, когда появится эта надпись Timeout...


 
int64 ©   (2002-07-11 07:59) [4]

Можно подменить сам скрипт во время загрузки.
Не подойдёт?


 
BlackSun   (2002-07-11 08:31) [5]

Если это единственный вариант, то, плиз, объясни как сделать подмену.
Я пробовал через OnUpdate, но это событие вызывается и когда надо и когда не надо, не отличить из-за чего оно происходит.


 
int64 ©   (2002-07-11 09:27) [6]

Всмысле подменить весь фрейм вместе со скриптом.

procedure ChangeFrame(WB: TWebbrowser; FrameName: string);
var
OleContainer: IOleContainer;
enum: IEnumUnknown;
TempUnk: IUnknown;
Fetched: PLongint;
FrameNo: integer;
Coll: HTMLElementCollection;
IWB: IWebbrowser2;
begin
With WB do
begin
while ReadyState <> READYSTATE_COMPLETE do
Forms.Application.ProcessMessages;
if Assigned(document) then
begin
Coll:=HTMLElementCollection(HTMLDocument(Document).All.Tags("FRAME"));
for FrameNo:=0 to Coll.length-1 do
if HTMLFrameElement(Coll.item(FrameNo,varEmpty)).name=FrameName then break;
Fetched := nil;
OleContainer := Document as IOleContainer;
OleContainer.EnumObjects(OLECONTF_EMBEDDINGS, Enum);
Enum.Skip(FrameNo);
Enum.Next(1, TempUnk, Fetched);
IWB:= TempUnk as IWebbrowser2;
end;
end;
if assigned(IWB) then
HTMLDocument(IWB.Document).body.innerHTML:= "<.....>";
end;


Можно только скрипт, но какая разница: документ или часть его.


 
BlackSun   (2002-07-11 12:48) [7]

Спасибо, попробую, жаль, что по другому нельзя.
И еще, а никак нельзя узнать это время задержки? Я бы тогда знал, когда надпись появится...
В любом случае спасибо!


 
BlackSun   (2002-07-11 13:54) [8]

Я конечно торможу, но Дельфи выдает Unknown Identifier IOleContainer и далее в том же духе... что сделать?


 
int64 ©   (2002-07-11 17:17) [9]


> жаль, что по другому нельзя

Может и можно. Только мало кому это надо. Поройся в MSDN.

> Я бы тогда знал, когда надпись появится...

Тебе только надо в теле функции timeout() приписать свою функцию-индикатор. И когда наступит время обновления она запустится и передаст инфу в приложение.

Чтоб нашлись описатели:

uses ...ActiveX, MSHTML;



 
kig ©   (2002-07-11 19:24) [10]

Попробуйте подцепится к событиям объекта choices в Дельфи после загрузки страницы.
Статья по этому поводу есть на RSDN (правда пример на C)
http://www.rsdn.ru/article/?inet/dhtmlspy.xml



Страницы: 1 вся ветка

Текущий архив: 2002.07.25;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.015 c
3-81204
Filat
2002-07-04 09:16
2002.07.25
Сделал Create Table, не погу подключить програмно. Help!


14-81470
BillyJeans
2002-06-28 15:48
2002.07.25
Help!!! Уехали картинки на панели инструментов...


7-81488
x-Position
2002-04-20 18:28
2002.07.25
Нулевой байт? А как с ним бороться?


7-81507
vlad0007
2002-04-11 20:02
2002.07.25
Okey кто нить знает???


3-81166
AlexeyBl
2002-06-30 16:42
2002.07.25
Проблемы с чтением данных из BLOB-поля