Форум: "Основная";
Текущий архив: 2002.07.18;
Скачать: [xml.tar.bz2];
Вниз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 вся ветка
Форум: "Основная";
Текущий архив: 2002.07.18;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.005 c