2012-03-14 37 views
0

我運行此代碼.__返回ComObject:系統,當我使用的getAttribute

HtmlElement.GetAttribute("onClick") 

要嘗試並訪問該元素的onclick屬性,但是這一切都返回的是系統.__ ComObject。我不知道爲什麼會發生這種情況,所有其他的GetAttribute調用都會返回實際的字符串。

謝謝。

+0

嘗試下後http://stackoverflow.com/questions/6223840/how-to-get-actual-javascript-value-in-onclick-from-webbrowser-control – volody 2012-03-14 18:34:21

+0

我已經看到了,沒有明確的答案。 – TheGateKeeper 2012-03-14 18:36:25

+0

這是因爲onClick是一個事件,而不是一個字符串。考慮使用HtmlElement.Click,而不是清楚你想要用onClick做什麼。 – 2012-03-14 19:09:06

回答

1

示例代碼

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 
+0

這個問題是關於C#,而不是VB.NET,如果你打算髮布示例代碼,至少應該先將它轉換爲禮貌! – Trontor 2014-01-27 11:15:57

0

首先,你可以嘗試確定控制的類型;然後將您的對象轉換爲此類型。使用此方法可以訪問元素的屬性。例如,如果您的對象是包含「onclick」方法的「div」,則必須將您的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]; 
    } 

相關問題