【发布时间】:2023-04-03 06:03:01
【问题描述】:
在使用System.Windows.Forms.WebBrowser控件时,有没有办法控制它将使用哪个版本的IE渲染引擎?
【问题讨论】:
-
感谢您提供重复链接
标签: .net winforms controls webbrowser-control
在使用System.Windows.Forms.WebBrowser控件时,有没有办法控制它将使用哪个版本的IE渲染引擎?
【问题讨论】:
标签: .net winforms controls webbrowser-control
我相信 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(...);
}
}
}
【讨论】: