Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.07.25;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.006 c
1-81355
qqqqq
2002-07-13 09:37
2002.07.25
Как видео запихать в прогу???


3-81139
muhin-av
2002-07-03 16:11
2002.07.25
Ну нет у пацана хорошей книги


1-81333
Александр
2002-07-12 21:23
2002.07.25
Интересно


1-81226
Sour
2002-07-14 12:27
2002.07.25
Отенки цвета


1-81213
SPeller
2002-07-14 09:22
2002.07.25
Пристыковать TCanvas к TCustomPanel





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский