Вниз
Скачать: CL | DM;

TWebBrowser   Найти похожие ветки 

 
Vilux   (2002-07-09 01:17) [0]

Имеется TWebBrowser и страничка в нем с несколькими фреймами, так вот вопрос. Как получить доступ к html-коду каждого фрейма?


 
int64 ©   (2002-07-09 04:22) [1]

Документ браузера это OleContainer, на котором могут располагаться другие браузеры (фреймы).
Слудующий пример показывает, как достучаться до фреймов.

Функция GetFrame ищет фрейм с именем FrameName.

procedure TForm1.Button1Click(Sender: TObject);
begin
WebBrowser1.Navigate("c:\MultiFrames.htm");
end;

function GetFrame(WB: IWebbrowser2; FrameName: string): IWebbrowser2;
var
OleContainer: IOleContainer;
enum: IEnumUnknown;
TempUnk: IUnknown;
Fetched: PLongint;
FrameNo: integer;
Coll: HTMLElementCollection;
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);
Result := TempUnk as IWebbrowser2;
end else Result := nil;
end;
end;

procedure TForm1.Button2Click(Sender: TObject);
var W: IWebbrowser2;
begin
W:=GetFrame(WebBrowser1.DefaultInterface, "destframe");
if assigned(W) then
HTMLDocument(W.Document).body.innerHTML:= "<h1>Hi, World!</h1>";
end;


Разумеется, следует учитывать, что фреймы бывают и вложенными.

Дерзай.



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

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.009 c
1-58044
Dmk
2002-07-08 01:00
2002.07.18
Менюшка моргает как чекнутая :+|


8-58233
Diamond
2002-03-06 20:56
2002.07.18
Сравнение 2х bitmap


7-58341
FinDelDev
2002-04-26 11:59
2002.07.18
Замена системных часов


3-57982
Igor_
2002-06-26 14:09
2002.07.18
FreeReport выводе отчета изменить выводимое значение


1-58094
Alex
2002-07-08 16:01
2002.07.18
Active:=True;




   Наверх