有个网页在我本地硬盘上,我通过Webbrowser1调用本地地址(like:c:\adfa\adfasd.html)去读取并且生成对象,发现不能获取frame标签中的src属性值。注:本地仅有这个frame文件,没有别的html。希望大家帮忙啊,分不够可以再加。
解决方案 »
- DBGridEh绑定字段的情况下,如何触发OnDrawDataCell事件?
- 用delphi做数据库查询
- Delphi中有个工程为什么会一运行有错的地方就卡住, 要关掉整个delphi才行? 而其它工程就没问题
- 请帮看看这段代码?
- Delphi DBGrid为什么不能及时反应数据库的变化?
- 工程输出路径里面填(..\..\Exe\Dll)是什么意思啊?
- 为什么在BandData上放的Text不能显示呢,我想作一个换行和翻页怎么作啊
- 哪位老兄机器上装有Delphi 5 ?? 请发给我一个文件TEEQR50.bpl 在/System32下重谢!!!狂谢
- 想用delphi编数据库,什么教导书最好?
- 要高分来这里:关于Delphi报表控件的问题?
- PageControl 中的多个TreeView的问题,请帮忙!
- 怎么样在treeview下面 确定子目录所在的根目录 ?
<html>
<head>
<title>some title</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="keywords" content="some keywords">
</head>
<FRAMESET rows="*,73" name="o_frame" framespacing="0" frameborder="NO" border="0">
<FRAME NAME="t_frame" SRC="http://www.host.com/url">
<frameset cols="*,0" frameborder="NO" border="0" framespacing="0" SCROLLING="NO" noresize> <FRAME NAME="s_frame" SRC="some_local_url" SCROLLING="NO" noresize>
<FRAME src="http://www.host.com/login_url" name="l_frame">
</frameset>
</FRAMESET>
<noframes>
<body>
<p>some text</p>
<p>some text</p> </body>
</noframes>
</html>试问,如何取出<FRAME NAME="t_frame" SRC="http://www.host.com/url">中的http://www.host.com/url??别用正则表达式和字符串search函数啊~~~ 用webbrowser控件,取出来某个对象的属性。再次表示感谢!!
通过TWebBrowser找到IHTMLDocument2接口,然后获取其中的ALL集合对象,然后枚举该集合,如果在该集合中的某个元素支持IHTMLFrameBase接口,即可以通过get_src()方法取得其Src。
IHTMLDocument2 webbrowser htmlframebase这三个类型,相互之间的关系,我有点晕~
begin
WebBrowser1.Navigate('C:\temp\temp.htm');
end;procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject;
const pDisp: IDispatch; var URL: OleVariant);
var
vHTMLDocument2: IHTMLDocument2;
vHTMLElementCollection: IHTMLElementCollection;
vHTMLElement: IHTMLElement;
I: Integer;
begin
if not Assigned(WebBrowser1.Document) then Exit;
vHTMLDocument2 := WebBrowser1.Document as IHTMLDocument2;
vHTMLElementCollection := vHTMLDocument2.all;
for I := 0 to vHTMLElementCollection.length - 1 do
begin
vHTMLElement := vHTMLElementCollection.item(I, I) as IHTMLElement;
if SameText('FRAME', vHTMLElement.tagName) then
Memo1.Lines.Add((vHTMLElement as IHTMLFrameBase).src)
end;
end;
换成Application.ProcessMessages;试试