如果想打开H5资源,有两个选择
- 1.使用谷歌内核打开 即浏览器的极速模式
- 2.使用IE内核打开,即浏览器的兼容模式
如果只是想单纯的打开普通的H5 使用谷歌内核,Nuget 搜 CefSharp即可,使用百度就可以了,下面说要使用IE打开H5.
现在有一批H5资源比较特殊,交互动画在浏览器里必须以兼容模式打开才能使用,这里的矛盾就是webbrower不支持h5,即IE内核打开,而兼容模式是IE内核不支持h5
- winform 是IE内核不支持H5 一百度都是只有这么一句话,你在winform里试了一下,果然打不开。
但是,IE内核从IE9之后就开始支持H5了,只是你不知道。
上代码
IEVersion.cs
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.Win32;
namespace H5浏览器
{
public class IEVersion
{
/// <summary>
/// IE WebBrowser内核设置
/// </summary>
public static void BrowserEmulationSet()
{
//当前程序名称
var exeName = Process.GetCurrentProcess().ProcessName + ".exe";
//系统注册表信息
var mreg = Registry.LocalMachine;
//IE注册表信息
var ie = mreg.OpenSubKey(@"SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION", RegistryKeyPermissionCheck.ReadWriteSubTree);
if (ie != null)
{
try
{
var val = ieVersionEmulation(ieVersion());
if (val != 0)
{
ie.SetValue(exeName, val);
}
mreg.Close();
}
catch (Exception ex)
{
Console.Write(ex.Message);
}
}
}
/// <summary>
/// IE版本号
/// </summary>
/// <returns></returns>
static int ieVersion()
{
//IE版本号
RegistryKey mreg = Registry.LocalMachine;
mreg = mreg.CreateSubKey("SOFTWARE\\Microsoft\\Internet Explorer");
//更新版本
var svcVersion = mreg.GetValue("svcVersion");
if (svcVersion != null)
{
mreg.Close();
var v = svcVersion.ToString().Split('.')[0];
return int.Parse(v);
}
else
{
//默认版本
var ieVersion = mreg.GetValue("Version");
mreg.Close();
if (ieVersion != null)
{
var v = ieVersion.ToString().Split('.')[0];
return int.Parse(v);
}
}
return 0;
}
/// <summary>
/// 根据IE版本号 返回Emulation值
/// </summary>
/// <param name="ieVersion"></param>
/// <returns></returns>
static int ieVersionEmulation(int ieVersion)
{
//IE7 7000 (0x1B58)
if (ieVersion < 8)
{
return 0;
}
if (ieVersion == 8)
{
return 0x1F40;//8000 (0x1F40)、8888 (0x22B8)
}
if (ieVersion == 9)
{
return 0x2328;//9000 (0x2328)、9999 (0x270F)
}
else if(ieVersion == 10)
{
return 0x02710;//10000 (0x02710)、10001 (0x2711)
}
else if(ieVersion == 11)
{
return 0x2AF8;//11000 (0x2AF8)、11001 (0x2AF9
}
return 0;
}
}
}
该脚本更改IE内核版本到高版本
在 NewForm_Load方法里调用,再使用工具里自带的WebBrower打开H5,就可以了
private void Form1_Load(object sender, EventArgs e)
{
//设置IE版本
IEVersion.BrowserEmulationSet();
webBrowser1.ScriptErrorsSuppressed = true; //设置不弹出脚本错误提示框
}