我有两个问题,是使用MShtml时遇到的

pipimei 2000-03-14 01:28:00
我有两个问题,是使用MShtml时遇到的:

1、如何检取每个网页的所有连接?怎样使用htmldocument的Links?,用“links[1]”则语法错误。htmlElementCollection类该怎样正确地使用,我找不到参考书。
2、如何利用HtmlDocument类得到整个网页的原代码,其中的Body.OUterHtml得到的代码不全(仅有Body部分)。
3、(不好意思,超过两个问题了),提个难度更大的问题:如何用程序的方法保存整个网页(不是利用TwebBrowser的ExecWeb方法)

上述问题困扰我好久了,请高手指点迷津,十分感谢。
...全文
124 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
hubdog 2000-03-14
  • 打赏
  • 举报
回复
1.
procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject;
const pDisp: IDispatch; var URL: OleVariant);
var
Links:IHTMLElementCollection;
Doc:IHTMLDocument2;
len:integer;
item:olevariant;
begin
Doc:=webbrowser1.document as IHtmlDocument2;
links:=Doc.links;
len:=links.length;
if len>0 then
begin
Item:=links.item(0,varEmpty);
item.click;
end;
end;
2.3.在ie5中
uses ....,activex,mshtml;
var
HTMLDocument: IHTMLDocument2;
PersistFile: IPersistFile;
begin
...
HTMLDocument := WebBrowser1.Document as IHTMLDocument2;
Persist := HTMLDocument as IPersistFile;
Persist.Save(StringToOleStr('test.htm'), True);

while HTMLDocument.readyState <> 'complete' do
Application.ProcessMessages;
...
end;
兄弟,给分吧,哈哈

ace 2000-03-14
  • 打赏
  • 举报
回复
1 其实很多时候不需要用IHTMLElementCollection的,取link可以这样
var
item : Olevariant;
begin
if WebBrowser1.OleObject.Document.All.Links.Length < 1 then exit;
item := Webbrowser1.OleObject.Document.All.Links.item(0);
end;

对IHTMLElementCollection 可以看看MSDN

对于后两个问题
如果你不对document的内容进行修改的话,hubdog的方法就可以了
但如果你修改过,用这种方法就保存不了修改的内容.我也在为这个问题
困惑.ie5以上可以用html对象的outerHtml取得所有内容.但ie5以下,对
body外的好像就没办法了.

5,386

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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