使用System.Windows.Forms.WebBrowser
控件时,有没有办法控制它将使用哪个版本的IE渲染引擎?
答案 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(...);
}
}
}