« 关于Delphi制作的Dll在调用过程中出现乱码的问题及解决方法小马趣事 »

C#之AxWebBrowser编程之iFrame、Frame篇

    最近要用C#做一个对网页做业务操作的应用程序,于是开始我的 C#之AxWebBrowser编程篇,从中学的东西很多,但我觉的AxwebBrowser对iframe及Frame的处理是相对比较麻烦的,而且我其中一个业务更加是frame中有iframe然后iframe里还有一层frame,结构层次是相当的深,对iframe或者frame的地址导航可以用2种方法实现:
   第一种用写脚本运行

 ((IHTMLDocument2)AxWebBrowser.Document).parentWindow.execScript("window.mainFrame.document.iframe1.document.parentWindow.imainFrame.location.replace('http://www.antzj.net')", "");

另外一种就是用对象模式:

object abd = 1;
object abc = 0;


((HTMLWindow2Class) ((IHTMLDocument2) _iMWeb.Document).frames.item(ref abd)).navigate(http://www.antzj.net);
一层结构
((HTMLWindow2Class)
                            ((IHTMLDocument2)
                             ((HTMLWindow2Class)
                              ((IHTMLDocument2)
                               ((IHTMLDocument3)
                                ((HTMLWindow2Class) ((IHTMLDocument2) _iMWeb.Document).frames.item(ref abd)).document).
                                   getElementById("iframe").document).frames.item(ref abc)).document).frames.item(ref abd)).navigate(http://www.antzj.net);
三层结构,按照正常的思路上面的代码应该是
((HTMLWindow2Class)
                            ((IHTMLDocument2)
                              ((IHTMLDocument3)
                                ((HTMLWindow2Class) ((IHTMLDocument2) _iMWeb.Document).frames.item(ref abd)).document).
                                   getElementById("iframe").document).frames.item(ref abd)).navigate(http://www.antzj.net);
三层结构的第一种写法我认为是已经进入到iframe里,然后在找下一个Frame,结果在测试的事情却要在iframe下还要取得第一个frame,然后在取iframe的第而个Frame,貌似getElementById("iframe").document 这句话没什么效果(在取掉这句话,按逻辑思路是应该符合的)我没有实验正确与否。
[((HTMLWindow2Class)
                            ((IHTMLDocument2)
                             ((HTMLWindow2Class)
                              ((IHTMLDocument2)
                                ((HTMLWindow2Class) ((IHTMLDocument2) _iMWeb.Document).frames.item(ref abd)).document).
                                   frames.item(ref abc)).document).frames.item(ref abd)).navigate(http://www.antzj.net);
]这个方法我没验证过,另外的几个写法,我的程序中都有不同的体现。

网上关于AxWebBrowser 获取的网页里面有框架的介绍比较少,特别是内置框架(iframe),如果上面我没验证写法正确的话,也就是说iframe是当做frame来处理的。的资料

这个是3曾签套 Frame 套 IFrame 套 Frame 。然后改变的是最里曾 frame的location.其他的很多操作都可以用类似这样的方法实现。

  • 相关文章:

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

最新评论及回复

Google提供

最近发表

Powered By Z-Blog 1.8 Spirit Build 80605

Copyright 蚂蚁 www.antzj.net. Some Rights Reserved.