【发布时间】:2013-01-30 22:48:07
【问题描述】:
我有这个 HTML 代码
<div class="anc-style" onclick="window.open('./view.php?a=foo')"></div>
我想提取“onclick”属性的内容。我试图做类似的事情:
div.GetAttribute("onclick").ToString();
理想情况下会产生字符串
"window.open('./view.php?a=foo')"
但它返回一个 System.__ComObject。
我可以通过将 ("onclick") 更改为 ("class") 来获取类,onclick 是怎么回事?
HtmlElementCollection div = webBrowser1.Document.GetElementsByTagName("div");
for (int j = 0; j < div.Count; j++) {
if (div[j].GetAttribute("class") == "anc-style") {
richTextBox1.AppendText(div[j].GetAttribute("onclick").ToString());
}
}
【问题讨论】:
-
这和C#有什么关系
-
请发布您创建的代码以尝试完成此操作。
-
添加代码以进一步解释,抱歉。它正在使用网络浏览器控件。
-
我相信这个问题是因为底层 IE 引擎正在返回一个“脚本对象”并且
GetAttribute是 not 正确返回 DOM 属性(而是它所代表的对象)。虽然完全破解,但很可能可以使用HtmlElement.OuterHtml将其“作为字符串”提取。我再说一遍:total hack。也可以提取返回的所述“脚本对象”的文本。但第一步是准确确定它是什么类型的对象。 -
返回 OuterHtml 确实有效,但在我的情况下,这个 div 元素也有子元素,因此它也将这些子元素作为文本返回。
标签: c# html-parsing webbrowser-control