我想以C#项目的Windows形式显示网页:http://vhg.cmp.uea.ac.uk/tech/jas/vhg2018/WebGLAv.html。
我在其中使用WebBrowser工具,并编写以下代码以在表单中显示此网页:
webBrowser1.Navigate("http://vhg.cmp.uea.ac.uk/tech/jas/vhg2018/WebGLAv.html");
但是它没有显示完整的网页!
我应该怎么做?
答案 0 :(得分:2)
默认情况下,Windows窗体应用程序使用IE包装器,并且不保证使用最新的IE版本。阅读this article可以了解IE包装程序背后发生的情况以及Windows仿真密钥的作用。
我的一个旧项目中的这段代码允许以编程方式为可执行程序更改IE的默认仿真版本:
private static readonly string BrowserEmulationRegistryKeyPath =
@"Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION";
/// <summary>
/// Add the process name to internet explorer emulation key
> /// i do this because the default IE wrapper dose not support the latest JS features
> /// Add process to emulation key and set a DWord value (11001) for it means we want use IE.11 as WebBrowser component
/// </summary>
public bool EmulateInternetExplorer()
{
using (
var browserEmulationKey = Registry.CurrentUser.OpenSubKey(BrowserEmulationRegistryKeyPath,
true))
{
if (browserEmulationKey == null)
Registry.CurrentUser.CreateSubKey(BrowserEmulationRegistryKeyPath);
string processName = $"{Process.GetCurrentProcess().ProcessName}.exe";
// Means emulation already added and we are ready to start
if (browserEmulationKey?.GetValue(processName) != null)
return true;
// Emulation key not exists and we must add it ( We return false because application restart to take effect of changes )
if (browserEmulationKey != null)
{
browserEmulationKey.SetValue(processName, 11001, RegistryValueKind.DWord);
browserEmulationKey.Flush();
}
return false;
}
}
如果您的网站在最新的Internet Explorer(不兼容)中无法正确显示,则应使用将Chromium嵌入到您的.Net应用程序中的其他Web浏览器包装程序(如cefSharp)。
答案 1 :(得分:0)
您可以使用Google SDK来浏览或使用显示html内容的方式来对此进行裁判 link