WebBrowser如何遍历iframe中每个元素的在屏幕上的坐标?

cqking 2010-08-27 02:35:27
WebBrowser如何遍历iframe中每个元素的在屏幕上的坐标?

假如 已经找到 iframe 元素 ee ,

HtmlDocument iframeDoc = ee.Document;

遍历 iframeDoc 结果是父窗口的元素.

正确的怎样写.

谢谢.
...全文
1548 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
dingding3224 2011-12-06
  • 打赏
  • 举报
回复
MARK

如梦就是牛b啊
mngzilin 2010-08-28
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 cqking 的回复:]
HTMLDocument doc1 = (HTMLDocument)frame1.document;

这步出错,
[/Quote]

using mshtml;
wuyq11 2010-08-27
  • 打赏
  • 举报
回复
MessageBox.Show(webBrowser1.Document.Window.Frames["main"].Document.Body.InnerHtml);
HTMLDocument doc = (HTMLDocument)webBrowser1.Document.DomDocument;
object j;
for (int i = 0; i < doc.parentWindow.frames.length; i++)
{
j = i;
HTMLWindow2Class frame = doc.parentWindow.frames.item(ref j) as HTMLWindow2Class;
if (frame.name == "main")
{
MessageBox.Show(frame.document.title);
}
}
IHTMLDocument2 doc = (IHTMLDocument2)webBrowser1.Document.Window.Frames["main"].Document.DomDocument;

private void webBrowser1_Navigating(object sender, WebBrowserNavigatingEventArgs e)
{
string url = webBrowser1.Document.Window.Frames["main"].Document.ActiveElement.GetAttribute("src");
}

mngzilin 2010-08-27
  • 打赏
  • 举报
回复
更正下:
int x = ((IHTMLElement)doc.getElementsByName("iframe的name").item(ref index)).offsetLeft + title_txt.offsetLeft + doc.body.offsetLeft + this.Left;
int y = ((IHTMLElement)doc.getElementsByName("iframe的name").item(ref index)).offsetTop + title_txt.offsetTop + doc.body.offsetTop + this.Top;
mngzilin 2010-08-27
  • 打赏
  • 举报
回复
这是原理,获取title_txt在屏幕上的坐标位置,自己慢慢看吧

WebBrowser wb;
HTMLDocument doc = (HTMLDocument)wb.Document.DomDocument;
object index = 1;
IHTMLWindow2 frame1 = (IHTMLWindow2)doc.frames.item(ref index);
HTMLDocument doc1 = (HTMLDocument)frame1.document;

//51文章发表标题
IHTMLElement title_txt = (IHTMLElement)doc1.getElementById("subject");

int x = ((IHTMLElement)doc.getElementsByName("iframe的name").item(ref index)).offsetLeft + title_txt.offsetLeft + ((IHTMLElement)wb.Document.Body).offsetLeft + this.Left;
int y = ((IHTMLElement)doc.getElementsByName("iframe的name").item(ref index)).offsetTop + title_txt.offsetTop + ((IHTMLElement)wb.Document.Body).offsetTop + this.Top;
mngzilin 2010-08-27
  • 打赏
  • 举报
回复
我提供给你的方法是通过Dom来访问webbrower页面元素

至于你能否成功,看你的调试能够力了

原理肯定无误


别忘记using mshtml;
gyj5240 2010-08-27
  • 打赏
  • 举报
回复
HtmlDocument doc = (HtmlDocument)webBrowser1.Document.Window.Frames["frame名字"].Document;

cqking 2010-08-27
  • 打赏
  • 举报
回复
HTMLDocument doc1 = (HTMLDocument)frame1.document;

这步出错,

110,499

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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