Webbrowser 如何获得Frame/IFrame的当前页面地址?

三断笛 2010-12-15 03:51:09
一个Webbrowser,浏览一个带框架的网站,如bbs.csdn.net.你再进入熟悉的VB子论坛,此时右侧框架显示了VB子论坛的帖子列表,右击页面,可以得到右侧框架页面的地址:https://forum.csdn.net/BList/VB/
此时我得到了Webbrowser的Document对象,为WBDom,同时我还得到了右侧的Frame对象,ValidElement,它的Name属性为ContentFrame.
现在我要转到右侧框架内的页面做一些处理,需要将Webbrowser引导至右侧框架的页面地址,我要怎样才能得到这个框架的页面地址呢?(框架的此时的页面地址并不一定是初始框架地址,即框架的Src属性)

在不转入到框架内页面的情况下,有没有办法得到这个右侧的框架对象呢?(MSHTML.HTMLFrameElement对象),或得到这个右侧框架的Document对象.

我尝试过的办法
当鼠标移到右侧框架上方时,用Document.ElementFromPoint方法得到一个MSHTML.HTMLFrameElement对象(同样也是HTMLElement对象),假设为ObjFrame.
我尝试输出ObjFrame.Src,objFrame.Document.Location,ObjFrame.Document.Location.href,得到的都是地址栏中的地址,即父层地址,而不是框架内页面的实际地址.
而我用Webbrowser1.Document.ContentFrame.Location,却能得到正确的地址(假设ContentFrame为右侧框架的名字).但是问题并没有得到完全的解决,因为这种方法并不一定奏效,只对某些网站有效(不知道为什么),像bbs.csdn.net就无效.

...全文
448 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
yuan85781 2012-05-01
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]
取得顶层document的所有frame的集合:Webbrowser1.Document.frames,然后一层层往下遍历吧。
[/Quote]
Webbrowser1.Document.frames这个语句写出来好像出现错误,能不能指点一下
三断笛 2010-12-31
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 sysdzw 的回复:]
取得顶层document的所有frame的集合:Webbrowser1.Document.frames,然后一层层往下遍历吧。
[/Quote]
这样做有权限问题.暂时采用LE浏览器中的EnumFrames方法
橘子皮... 2010-12-15
  • 打赏
  • 举报
回复
楼主把代码放来看看,我来学习学习
无·法 2010-12-15
  • 打赏
  • 举报
回复
取得顶层document的所有frame的集合:Webbrowser1.Document.frames,然后一层层往下遍历吧。
dbcontrols 2010-12-15
  • 打赏
  • 举报
回复
有些地址是经过映射的,防止别人扒拉东西

1,502

社区成员

发帖
与我相关
我的任务
社区描述
VB 网络编程
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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