我正在运行此代码:
HtmlElement.GetAttribute("onClick")
尝试访问该元素的onClick属性,但所有这些都返回System .__ ComObject。我不知道为什么会发生这种情况,所有其他GetAttribute调用都返回实际的字符串。
感谢。
答案 0 :(得分:0)
示例代码
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
WebBrowser1.Navigate("http://stackoverflow.com/questions/9707869/system-comobject-is-returned-when-i-use-getattribute")
End Sub
Private Sub WebBrowser1_DocumentCompleted(sender As Object, e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted
Dim a As HtmlElement = WebBrowser1.Document.GetElementById("portalLink").FirstChild
MsgBox(a.DomElement.attributes("onclick").value.ToString)
End Sub
答案 1 :(得分:0)
首先,您可以尝试确定控件的类型;然后将您的对象转换为此类型。使用此方法可以访问元素的属性。
例如,如果您的对象是“div”包含“onclick”方法,则必须将com对象转换为mshtml.HTMLDivElement
(必须将程序集“mshtml.dll”添加到项目中才能使用mshtml类);然后你可以在outerHTML
属性中查找“onclick”属性。
if (doc.GetElementById("id-of-div").GetAttribute("onclick").Equals("System.__ComObject"))
{
mshtml.HTMLDivElement docCOM = (mshtml.HTMLDivElement)doc.GetElementById("id-of-div").DomElement;
string onClickStr = docCOM.outerHTML.[some string or regex operations here];
}
if (doc.GetElementById("id-of-div").GetAttribute("onclick").Equals("System.__ComObject"))
{
mshtml.HTMLDivElement docCOM = (mshtml.HTMLDivElement)doc.GetElementById("id-of-div").DomElement;
string onClickStr = docCOM.outerHTML.[some string or regex operations here];
}