我使用VB.NET框架创建了一个自定义浏览器来获取文档的元素。对于一个简单的摘要,每次单击一个元素documentClicked都会显示一条消息,但是当我单击iFrame中的元素时,它不会给我任何数据。
我认为,因为doc是一个HtmlDocument,而iframe将是一个HtmlWindow或者其他类似的东西;这就是为什么它不起作用,但我不确定如何宣布这一点。
基本上我只是希望能够点击任何页面上的任何元素并且它将显示坐标和大小 - 除了iFrame中的元素之外的所有内容都可以正常工作。
$(selector).toggle(speed,callback);
答案 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());
}
欢迎您简化变量声明。