【问题标题】:Controlling IE rendering engine for System.Windows.Forms.WebBrowser?控制 System.Windows.Forms.WebBrowser 的 IE 渲染引擎?
【发布时间】:2023-04-03 06:03:01
【问题描述】:

在使用System.Windows.Forms.WebBrowser控件时,有没有办法控制它将使用哪个版本的IE渲染引擎?

【问题讨论】:

标签: .net winforms controls webbrowser-control


【解决方案1】:

我相信 IE 通过操纵请求 User-Agent 字符串来做到这一点。

compatible; MSIE 7.0;
compatible; MSIE 8.0;
compatible; MSIE 9.0;

因此,要在 WebBrowser 中使用不同的渲染引擎,您需要做类似的事情。不幸的是,在WebBrowser is not easy 中访问了User-Agent。如果您扩展实际的 Com 组件,而不是使用 .Net 控件,则可以这样做。

public class ExtendedWebBrowser : WebBrowser
{
    ...

    void BeforeNavigate(object pDisp, ref object url, ref object flags,
                       ref object targetFrameName, ref object postData, 
                       ref object headers, ref bool cancel)
    {
         if (!headers.Contains("X-RequestFlag")
         {
             headers += "X-RequestFlag: true\r\n";

             // append user-agent header here
             headers["User-Agent"] = ...;

             // cancel current request
             cancel = true;

             // re-request with amended details
             Navigate((string)url, (string)targetFrameName, (byte[])postData, 
                      (string)headers);
         }
         else
         {
             base.BeforeNavigate(...);
         }
    }
}

【讨论】:

  • 我见过的大多数解决方案都涉及编辑注册表,或者它们要求您有权访问网页的源代码。这既不需要 - 伟大的解决方案恕我直言。
猜你喜欢
  • 2011-02-04
  • 1970-01-01
  • 2011-05-05
  • 2013-06-08
  • 1970-01-01
  • 2011-11-19
  • 1970-01-01
  • 2014-05-03
  • 2019-04-27
相关资源
最近更新 更多