首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WebBrowser control .NET --与此控件交互的目的是什么?

WebBrowser control .NET --与此控件交互的目的是什么?
EN

Stack Overflow用户
提问于 2011-07-27 13:03:37
回答 2查看 2.1K关注 0票数 5

我试图掌握WebBrowser控件,以便在我正在构建的数据提取应用程序中使用。

这里的要求之一是能够记录用户操作并播放它们。虽然我取得了一些成功,但我不知道我是否会以正确的方式去做这件事。

web上似乎有一些代码示例以非常不同的方式使用控件。更不用说有一个WinForms实现、一个WPF实现和一个Silverlight实现。

有谁能确认:

  1. 说得对吗?到目前为止,该控件的WPF版本没有与WinForms版本相同的功能,并且在对某些事件的反应方面受到了一定的限制吗?
  2. 为什么会在使用该控件时选择使用基于mshtml的类,而在WinForms中,似乎至少在WinForms中存在相同的任务执行方法?

示例

Winforms单击事件处理

代码语言:javascript
复制
void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
   foreach (HtmlElement ele in uc_webBrowser.Document.All)
   {
      HtmlElementEventHandler eventhandler = new HtmlElementEventHandler(documentClickHandler);

      if (ele.TagName.ToLower() == "a" || ele.TagName.ToLower() == "input" || ele.TagName.ToLower() == "select" || ele.TagName.ToLower() == "img")
      {
         ele.Click -= eventhandler;
         ele.Click += eventhandler;
      }
   }
}

使用mshtml 类单击事件句柄

代码语言:javascript
复制
void webBrowser1_Navigated(object sender, WebBrowserNavigatedEventArgs e)
{
   // Add doc null check otherwise the event handlers are assigned multiple times
   // http://stackoverflow.com/questions/5400020/how-come-htmldocumentevent-onclick-fires-up-multiple-times

   if (doc == null)
   {
      var eventHdlr = new mshtml.HTMLDocumentEvents2_onclickEventHandler(ClickEventHandler);

      doc = (mshtml.HTMLDocument)webBrowser1.Document.DomDocument;
      mshtml.HTMLDocumentEvents2_Event iEvent = (mshtml.HTMLDocumentEvents2_Event)doc;
      iEvent.onclick -= eventHdlr;
      iEvent.onclick += eventHdlr;
      //iEvent.oncellchange += new HTMLDocumentEvents2_oncellchangeEventHandler(iEvent_oncellchange);
      //iEvent.oncontrolselect += new HTMLDocumentEvents2_oncontrolselectEventHandler(iEvent_oncontrolselect);
      //iEvent.onselectionchange += new HTMLDocumentEvents2_onselectionchangeEventHandler(iEvent_onselectionchange);
   }
}
EN

回答 2

Stack Overflow用户

发布于 2011-08-03 00:04:13

几年前,我使用WinForms的WebBrowser实现了一个稍微复杂的WYSIWYG编辑器,当时的浏览器是IE7(或者Firefox 1或2,我不记得了)。如果您比在浏览器中加载页面更深入,您将看到MSHTML是一个可以使用的 PIA。

浏览器组件的行为在IE7中并不是100%的确定性(希望这在IE9中已经改变了,但更糟糕的是,您可能需要处理不同版本的Microsoft浏览器)。然而,一个设计良好的面向对象层最重要的是,它将为您的生产力创造奇迹。

我会尽量回答你对使用网页浏览器的疑虑:

根据下面的链接,在WPF的

  1. 中,您将获得与JavaScript相同的功能。正如以前在浏览器中做过的宏一样,您肯定会有足够的事件来执行您想做的事情。

What functional differences exist between WPF and WinForms WebBrowser control?

  1. 如果您不需要WebBrowser控件,请尽可能地从它运行。桌面图形用户界面中的浏览器可以提供很大帮助,但代价是。

但是,如果您想使用一个浏览器,您可能需要尝试不同的浏览器。例如,ASP.NET在MonoDevelop的设计师是在不久前与Mozilla Composer (壁虎引擎)一起开发的,在WebForms变得如此不受欢迎之前,有一个使用WebKit引擎从头开发的项目。

票数 1
EN

Stack Overflow用户

发布于 2011-07-29 19:34:40

我写了一些关于WebBrowser的东西。如果你愿意的话,你可以试试这个:http://www.dotnetfunda.com/articles/article840-working-with-webbrowser-in-wpf-.aspx

谢谢

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6844766

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档