【问题标题】:How can I get a handle or object reference to an HtmlElement from a WebBrowser control HtmlDocument?如何从 WebBrowser 控件 HtmlDocument 中获取对 HtmlElement 的句柄或对象引用?
【发布时间】:2010-10-28 10:06:53
【问题描述】:

想想“Firebug”,但完全来自 C#。

我有一个 WebBrowser 控件,我在 TreeView 中构建了一个 DOM 树。我希望能够在 TreeView 中的每个 DOM 元素与其在 WebBrowser 的 Document 中匹配的 HtmlElement 之间设置一个链接,以便当单击树中的节点时,Document 中的匹配元素会突出显示。

但是,当然,表面上唯一可用的元素访问是 GetElementById()、GetElementFromPoint() 和 GetElementsByTagName()。而且,当然,并非所有网页都有与之关联的 ID 或名称。而且由于在我的应用程序的用户体验中,用户不会单击 WebBrowser,而是单击 TreeView,因此我也无权访问 Point。

我正在试验我现在在 API 中找到的各种选项。但是,如果有人在这方面有经验,那就太好了。我似乎无法在任何地方的网络上找到详细信息。

提前感谢!

【问题讨论】:

    标签: c# html webbrowser-control domdocument


    【解决方案1】:

    就我个人而言,我会利用诸如 JQuery 之类的 JavaScript 库来执行这样的任务。该库易于使用,并且有大量示例/插件可用(http://jquery.com)。使用 JQuery,您不仅可以使用 ID,还可以通过 CSS 类、锚类型等获取它们。本质上,您可以从 HTML/CSS 中提取的任何内容都可以使用 JQuery 提取。

    如果您想从代码隐藏中处理 HtmlElement,您基本上必须为其分配一个 ID 并指定 RUNAT 属性。例如:

    <textarea id="bodyText" runat="server"></textarea>
    

    希望这在某种程度上有所帮助!

    【讨论】:

    • 我尝试添加 runat 服务器以及 onclick 处理程序引用,但未到达我的代码隐藏中具有该名称的处理程序。
    • HtmlElement 没有点击事件。但是,System.Web.UI.HtmlControls 中的某些控件确实具有您可以利用的点击事件。
    【解决方案2】:

    您尝试过All 属性吗?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-25
      • 1970-01-01
      • 1970-01-01
      • 2011-09-20
      • 1970-01-01
      • 2012-06-07
      相关资源
      最近更新 更多