Visual Basic获取iFrame中的单击元素

时间:2017-02-07 17:36:57

标签: html vb.net iframe webbrowser-control

我使用VB.NET框架创建了一个自定义浏览器来获取文档的元素。对于一个简单的摘要,每次单击一个元素documentClicked都会显示一条消息,但是当我单击iFrame中的元素时,它不会给我任何数据。

我认为,因为doc是一个HtmlDocument,而iframe将是一个HtmlWindow或者其他类似的东西;这就是为什么它不起作用,但我不确定如何宣布这一点。

基本上我只是希望能够点击任何页面上的任何元素并且它将显示坐标和大小 - 除了iFrame中的元素之外的所有内容都可以正常工作。

$(selector).toggle(speed,callback);

1 个答案:

答案 0 :(得分:0)

你非常正确。现在,正如我在评论中所说,这只有在Iframe和父窗口都在同一文档域中时才有效,否则您将获得未经授权的访问异常。

我也假设你在这个页面上只有1个iframe,如果没有,你将不得不遍历列表并找出正确的iframe。

VB

    Public Class Form2
        Dim WithEvents IframeDoc As HtmlDocument
        Private Sub WebBrowser1_DocumentCompleted(sender As Object, e As WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted
            If (WebBrowser1.ReadyState = WebBrowserReadyState.Complete) Then
                Dim doc = WebBrowser1.Document
                Dim window = doc.Window
                Dim IframeWindow = window.Frames(0)
                IframeDoc = IframeWindow.Document
            End If
        End Sub
        Private Sub Document_Click(sender As Object, e As HtmlElementEventArgs) Handles IframeDoc.Click
            MessageBox.Show(e.ToElement.ToString())
        End Sub
    End Class

C#

       private void WebBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
    {
        if (webBrowser1.ReadyState == WebBrowserReadyState.Complete)
        {
          var doc=   webBrowser1.Document;
            var window = webBrowser1.Document.Window;
            var iframewindow = window.Frames[0]; //I am assuming its the first one
            MessageBox.Show(iframewindow.Document.Domain);

        }
    }

    private void Document_Click(object sender, HtmlElementEventArgs e)
    {
        MessageBox.Show(e.ToElement.ToString());
    }

欢迎您简化变量声明。