Код:
Код:
// возвращает код HTML
function TForm1.GetHTMLCode(WebBrowser: TWebBrowser): String;
var
ps: IPersistStreamInit;
not13, ss: TStringStream;
sa: IStream;
ssUTF8, s: string;
Res: Boolean;
begin
ps := WebBrowser.Document as IPersistStreamInit;
s := '';
ss := TStringStream.Create(s);
try
sa := TStreamAdapter.Create(ss, soReference) as IStream;
Res := Succeeded(ps.Save(sa, True));
if Res then
Result := ss.DataString;
finally
ss.Free;
end;
end;
// обработчик OnDocumentComplete
procedure TForm1.WebBrowser1DocumentComplete(ASender: TObject;
const pDisp: IDispatch; var URL: OleVariant);
begin
...
Memo1.Text := '';
Content := GetHTMLCode(WebBrowser1);
Memo1.Text := Content;
...
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
WebBrowser1.Navigate('rambler.ru');
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
WebBrowser1.Navigate('http://love.rambler.ru/partner/link.phtml?pid=482400&lid=8206');
end;
если последовательно нажимать на кнопки сначала WebBrowser1.Navigate('rambler.ru');, потом WebBrowser1.Navigate('http://love.rambler.ru/partner/link.phtml?pid=482400&lid=8206');
то функция GetHTMLCode нормально возвращает HTML контент.
Если кнопкой загрузить WebBrowser1.Navigate('rambler.ru');, а потом в самом WebBrowser нажать на ссылку "http://love.rambler.ru/partner/link.phtml?pid=482400&lid=8206", то возвращается переменная Content пустая, причём Res := Succeeded(ps.Save(sa, True));, Res возвращается False,
должно быть True.
Получается что когда один раз грузишь через Navigate, то нормально, а когда после этого в самом браузере нажимаешь ссылку Content пустой.
Во вложенном файле проект.
Инструменты: WinXP + Delphi 2007