控制System.Windows.Forms.WebBrowser的IE渲染引擎?

时间:2011-09-10 05:41:21

标签: .net winforms controls webbrowser-control

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

1 个答案:

答案 0 :(得分:2)

我相信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(...);
         }
    }
}