Winform 使用webbrower打开H5(HTML5)资源 非谷歌内核,让IE支持兼容模式

如果想打开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; //设置不弹出脚本错误提示框
            
        }
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值