是否有可能在点击时在iFrame中拾取DOM元素?

时间:2011-05-23 02:52:11

标签: c# .net iframe browser

我正在使用C# .NET Framework 2.0来创建应用程序,该应用程序可以在WebBrowser控件中按用户选择单击的DOM元素。

到目前为止,我可以在WebBrowser控件的HTML中选择html标签及其属性。

//adding event when user mouse down or focus out
webBrowser1.Document.MouseDown += new HtmlElementEventHandler(myMouseDown);

这些事件会将DOM信息输出到列表框等

 private void myMouseDown(object sender, HtmlElementEventArgs e)
 {
    HtmlElement tag = webBrowser1.Document.GetElementFromPoint(e.ClientMousePosition);

    txtRecord.Items.Add("TagName=" + tag.TagName);
    txtRecord.Items.Add("id=" + tag.GetAttribute("id"));
    txtRecord.Items.Add("name=" + tag.GetAttribute("name"));
    txtRecord.Items.Add("type=" + tag.GetAttribute("type"));
    txtRecord.Items.Add("value=" + tag.GetAttribute("value"));
    txtRecord.Items.Add("class=" + tag.GetAttribute("class"));
    txtRecord.Items.Add("inner text=" + tag.InnerText);

 }

但是事件mouseDown在iFrame中不起作用。

当我点击iFrame内部时,它不会吐出DOM信息。

是否可以通过用户点击iFrame中的那个位置来获取DOM信息?

更新:

找到HtmlWindow对象并应用相同的事件逻辑。

HtmlWindow iFrame;
iFrame = webBrowser1.Document.Window.Frames[0];
iFrame.Document.MouseDown += new HtmlElementEventHandler(myMouseDown);

然后最后一行抛出UnauthorizedAccessException :(

1 个答案:

答案 0 :(得分:0)

我发现了为什么我得到 UnauthorizedAccessException 。这是因为我的主页面是http://localhost/index.html,而iFrame src违反了跨框架脚本安全,具体如下:

http://msdn.microsoft.com/en-us/library/ms171715.aspx
http://msdn.microsoft.com/en-us/library/ms533028.aspx

我已将iFrame src更改为使用相同的域http://localhost/secondPage.html

然后它开始工作了!