使用getAttribute时返回System .__ ComObject

时间:2012-03-14 18:25:33

标签: c# winforms

我正在运行此代码:

HtmlElement.GetAttribute("onClick")

尝试访问该元素的onClick属性,但所有这些都返回System .__ ComObject。我不知道为什么会发生这种情况,所有其他GetAttribute调用都返回实际的字符串。

感谢。

2 个答案:

答案 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]; }