C#之AxWebBrowser编程之iFrame、Frame篇

admin 发表于 编程乐园 分类,标签: , , ,
0

    最近要用C#做一个对网页做业务操作的应用程序,于是开始我的 C#之AxWebBrowser编程篇,从中学的东西很多,但我觉的AxwebBrowser对iframeFrame的处理是相对比较麻烦的,而且我其中一个业务更加是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.其他的很多操作都可以用类似这样的方法实现。

« 上一篇: :下一篇 »

发表我的评论

icon_wink.gif icon_neutral.gif icon_mad.gif icon_twisted.gif icon_smile.gif icon_eek.gif icon_sad.gif icon_rolleyes.gif icon_razz.gif icon_redface.gif icon_surprised.gif icon_mrgreen.gif icon_lol.gif icon_idea.gif icon_biggrin.gif icon_evil.gif icon_cry.gif icon_cool.gif icon_arrow.gif icon_confused.gif icon_question.gif icon_exclaim.gif