delphi WebBrowser问题。
我用delphi获取到了当前WebBrowser打开页面的源代码,获取到了body的innerHTML,我想从里面找到一个元素(有class,没有ID)怎么获取到这个元素...
我用delphi获取到了当前WebBrowser打开页面的源代码,获取到了body的innerHTML,我想从里面找到一个元素(有class,没有ID)怎么获取到这个元素呢。通过ID我知道。
我用delphi生成了一段Json数据,比如说:存放在字符串变量a里面。在我的一个HTML页面里也声明了一个json。var json=[] 怎样进行赋值呢?我现在用的是一个笨方法:用一个隐藏的DIV,把JSON用delphi写进这个DIV的innerHTML,然后用script获到这个div的innerHTML,再eval一下就可以使用了。但是这样太麻烦了。而且别人可以看到。有没有办法在delphi内部进行赋值。就是像这样: html里的json := 我写的的json数据?
比方说:我用webbrowser加载一个HTML里面是<div>123</div>
我在webbrowser的DocumentComplete事件里
获取这个HTML源码并成功修改成了<div>123456</div>
但是我如果右键刷新一次就又变成了<div>123</div>
我想这个刷新不是重新加载页面吗, 为什么不会触发DocumentComplete呢?
新手求解。谢谢。 展开
我用delphi生成了一段Json数据,比如说:存放在字符串变量a里面。在我的一个HTML页面里也声明了一个json。var json=[] 怎样进行赋值呢?我现在用的是一个笨方法:用一个隐藏的DIV,把JSON用delphi写进这个DIV的innerHTML,然后用script获到这个div的innerHTML,再eval一下就可以使用了。但是这样太麻烦了。而且别人可以看到。有没有办法在delphi内部进行赋值。就是像这样: html里的json := 我写的的json数据?
比方说:我用webbrowser加载一个HTML里面是<div>123</div>
我在webbrowser的DocumentComplete事件里
获取这个HTML源码并成功修改成了<div>123456</div>
但是我如果右键刷新一次就又变成了<div>123</div>
我想这个刷新不是重新加载页面吗, 为什么不会触发DocumentComplete呢?
新手求解。谢谢。 展开
1个回答
展开全部
只有Class没有id和name的可以通过遍历属性来实现,然后通过getAttribute('class')来找到你要的元素;
有些网页重新刷新并不会触发DocumentComplete时间的,很多都是内部刷新的,只能通过timer来定时获取源代码;
有些网页重新刷新并不会触发DocumentComplete时间的,很多都是内部刷新的,只能通过timer来定时获取源代码;
追问
怎么遍历属性?写个示例好吗?麻烦您了。对webbrowser不太了解。
追答
var
i : Integer;
label_iDispatch : iDispatch;
label_element : IHTMLAnchorElement;
ele : IHTMLElement;
str_outerhtml : string;
begin
doc := webbrowser1.document as IHTMLDocument2;
if not Assigned(doc) then
Exit;
for i:=0 to doc.links.length-1 do
begin
label_iDispatch := doc.links.item(i,0);
if Failed(label_iDispatch.QueryInterface(IHTMLAnchorElement,label_element)) then Continue;
label_element := doc.links.item(I,0) as IHTMLAnchorElement;
ele := doc.links.item(I,0) as IHTMLElement;
str_outerhtml := StringReplace(ele.outerHTML,'&','&',[rfReplaceAll]);
if (AnsiPos('超链接的href',label_element.href)>0) then
begin
showmessage(label_element.href);
Break;
end;
end;
end;
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询