我運行此代碼.__返回ComObject:系統,當我使用的getAttribute
HtmlElement.GetAttribute("onClick")
要嘗試並訪問該元素的onclick屬性,但是這一切都返回的是系統.__ ComObject。我不知道爲什麼會發生這種情況,所有其他的GetAttribute調用都會返回實際的字符串。
謝謝。
我運行此代碼.__返回ComObject:系統,當我使用的getAttribute
HtmlElement.GetAttribute("onClick")
要嘗試並訪問該元素的onclick屬性,但是這一切都返回的是系統.__ ComObject。我不知道爲什麼會發生這種情況,所有其他的GetAttribute調用都會返回實際的字符串。
謝謝。
示例代碼
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
這個問題是關於C#,而不是VB.NET,如果你打算髮布示例代碼,至少應該先將它轉換爲禮貌! – Trontor 2014-01-27 11:15:57
首先,你可以嘗試確定控制的類型;然後將您的對象轉換爲此類型。使用此方法可以訪問元素的屬性。例如,如果您的對象是包含「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];
}
嘗試下後http://stackoverflow.com/questions/6223840/how-to-get-actual-javascript-value-in-onclick-from-webbrowser-control – volody 2012-03-14 18:34:21
我已經看到了,沒有明確的答案。 – TheGateKeeper 2012-03-14 18:36:25
這是因爲onClick是一個事件,而不是一個字符串。考慮使用HtmlElement.Click,而不是清楚你想要用onClick做什麼。 – 2012-03-14 19:09:06