webbrowser打开网页成功,源代码都下载完毕了却不显示,是什么情况?

HackerMo0 2010-09-16 04:17:55

procedure TForm1.Button1Click(Sender: TObject);
begin
EmbeddedWB1.Navigate('http://www.educationnews.org/commentaries/76622.html'));
end;

procedure TForm1.EmbeddedWB1NavigateComplete2(ASender: TObject;
const pDisp: IDispatch; var URL: OleVariant);
begin
if glpDisp = nil then glpDisp := pDisp;
end;

procedure TForm1.EmbeddedWB1DocumentComplete(ASender: TObject;
const pDisp: IDispatch; var URL: OleVariant);
begin
if (glpDisp <> nil) and (glpDisp = pDisp) then
begin
glpDisp := nil;
ShowMessage('OK');
end;
end;


大多数网页用此方法来判断加载完毕都没问题,但是有些网页,比如我代码里的这个,如果单击后等待,就会发现弹出了窗口,但页面显示空白,我右键显示源代码,发现源代码都下载完毕了,这是怎么回事呢?恳请各位大大指教。。。
...全文
255 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
HackerMo0 2010-10-11
  • 打赏
  • 举报
回复
虽然还是没解决,不过还是结贴了吧。。。
HackerMo0 2010-10-07
  • 打赏
  • 举报
回复
有人没?
likeyrain 2010-09-25
  • 打赏
  • 举报
回复
多等一会试试,你IE会有同样情况不?这个很可能是网站的问题
HackerMo0 2010-09-19
  • 打赏
  • 举报
回复
还没搞定。。。
无条件为你 2010-09-17
  • 打赏
  • 举报
回复
你这种判断方法比较怪异。
iqyely 2010-09-17
  • 打赏
  • 举报
回复
来关注下
HackerMo0 2010-09-17
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 bdmh 的回复:]

这个网页,在浏览器中也是空白,这应该和你程序无关,和网页编码有关,如果是中文编码,就显示空白,修改成其他编码形式就可以显示了
[/Quote]

的确是这个问题,请问有没有办法实时修改编码呢?貌似webbrowser中无法直接修改啊。。。
HackerMo0 2010-09-17
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 mwy654321 的回复:]

你这种判断方法比较怪异。
[/Quote]

...用什么判断方法不要紧,关键是不显示啊,哥。。。你有办法不?
bdmh 2010-09-16
  • 打赏
  • 举报
回复
这个网页,在浏览器中也是空白,这应该和你程序无关,和网页编码有关,如果是中文编码,就显示空白,修改成其他编码形式就可以显示了
HackerMo0 2010-09-16
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 kye_jufei 的回复:]

get是怎麼寫的?WebBrowser.OleObject.Document.XMLDocument...
[/Quote]

我想您没明白我的问题,我是想要让webbrowser把网页显示出来,而不是要取他的源代码。。。
kye_jufei 2010-09-16
  • 打赏
  • 举报
回复
eg:

uses MSHTML, ActiveX,comobj;

function GetHtml(const WebBrowser:TWebBrowser): string;
const
BufSize = $10000;
var
Size: Int64;
Stream: IStream;
hHTMLText: HGLOBAL;
psi: IPersistStreamInit;
begin
if not Assigned(WebBrowser.Document) then Exit;

OleCheck(WebBrowser.Document.QueryInterface(IPersistStreamInit, psi));
try
hHTMLText := GlobalAlloc(GPTR, BufSize);
if 0 = hHTMLText then RaiseLastWin32Error;

OleCheck(CreateStreamOnHGlobal(hHTMLText, True, Stream));
try
OleCheck(psi.Save(Stream, False));

Size := StrLen(PChar(hHTMLText));
SetLength(Result, Size);
CopyMemory(PChar(Result), Pointer(hHTMLText), Size);
finally
Stream := nil;
end;
finally
psi := nil;
end;
end;
kye_jufei 2010-09-16
  • 打赏
  • 举报
回复
get是怎麼寫的?WebBrowser.OleObject.Document.XMLDocument...

1,594

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧