前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >微软官宣IE将“退役”,老网站如何实现在Chrome、Firefox高版本中兼容运行?

微软官宣IE将“退役”,老网站如何实现在Chrome、Firefox高版本中兼容运行?

原创
作者头像
BrowserApplet
修改于 2021-05-27 02:41:51
修改于 2021-05-27 02:41:51
2K0
举报
文章被收录于专栏:PluginOKPluginOK

一、 问题

美国微软公司为了推广其Chromium内核的Edge浏览器,在2021年5月19日突然宣布,自2022年6月15日起,绝大多数版本的Windows 10系统将不再支持IE浏览器,因此IE即将彻底退出互联网的舞台。具体来说微软决定将不再支持Windows 10所有消费者版本中的IE运行,即使用户强制启动IE也会重定向到Edge浏览器来打开网页,类似这样:

服务器和长期服务渠道(LTSC)的Windows 10版本中虽说暂时不变,但谁也说不清哪天也会被取消支持了。相关详情可点击:The future of Internet Explorer on Windows 10 is in Microsoft EdgeInternet Explorer 11 desktop app retirement FAQ查看。

IE诞生于1995年,是Windows系统默认的免费网页浏览器,微软利用系统捆绑的方式很快就击败了当时收费的竞争对手Netscape。在巅峰时期,IE占据了全球桌面浏览器市场90%以上的份额,直到2013年前后谷歌浏览器逐渐成为主流。在这近20年的时间里,虽然中途有Firefox浏览器最高时抢占了约30%市场份额,但是当时不管哪个网站的发布都得把兼容IE作为重头戏进行测试。而在互联网发展的历史进程中,浏览器的功能开始时还比较简单,为了弥补浏览器自身功能的不足和提高网页中的交互体验,浏览器开发商都提供了非常开放的插件开发接口给第三方调用,其中以IE中的ActiveX控件和非IE中的NPAPI插件最为典型。第三方公司基于浏览器的插件开发接口开发了各种各样的控件或插件,典型如金融行业网银系统的安全及读卡等控件、多媒体领域的Flash Player等网页播放器,工业设计领域的dwg/dxf等图纸查看控件,因此各大下载站点类别中还单独增加了浏览器插件软件。而美国谷歌公司的Chrome浏览器为了抢占IE的用户,基于IE开发接口发布了Chrome Frame插件可将IE网页改成Chromium内核渲染显示。为简化各浏览器的插件开发,国外还诞生了非常有名的跨浏览器的开源插件框架FireBreath,底层实现采用的是ActiveX控件和NPAPI插件技术,曾经流行的Java Applet和Unity网页游戏引擎底层实现同样如此,有几年时间基于这两个开发的网页游戏不仅多,还很火爆,全民半夜网络偷菜成为一景。而RIA(丰富型互联网应用程序)曾经也非常受企业欢迎,Adobe的Flex和微软的Silverlight作为RIA开发的两个典型代表由于门槛低、开发便捷等优势在企业信息化领域得到了广泛使用,其实现同样依赖ActiveX控件和NPAPI插件技术。

然而,这些浏览器的控件或插件是否安全、是否稳定好用,完全取决于其开发商,因此时常被别有用心的人或公司利用来散发病毒、植入木马或偷取敏感信息,导致联网操作越来越不安全,浏览器本身也经常因此失去响应或崩溃。IE浏览器不得已增加了多种所谓的安全设置来限制运行ActiveX控件,这又导致体验差、实施维护难,因为大多数电脑用户也不懂得如何修改设置来确保正常运行这些ActiveX控件。如下图所示:

而谷歌公司在2015年索性宣布在其后发布的Chrome浏览器直接取消NPAPI插件的运行支持,随后Firefox新版本浏览器也跟随Chrome不再支持NPAPI插件的运行,从此所有使用了NPAPI插件技术的老网站再也无法在Chrome、Firefox、Opera等高版本浏览器中运行,老网站提供商大多数就只能退而求其次,需要时只能让用户启动IE来访问。这不,时至今日即使是最有钱的金融行业各大银行,也没有解决其网银系统在Chrome、Firefox等高版本浏览器中的使用问题。当用户在这些浏览器中使用遇到兼容性问题时,也只能无奈的告诉用户,请使用IE浏览器,囧。然而现在微软平地一声雷,突然宣告IE即将寿终正寝,比如大多属于公共服务的银行、工商、税务、教育等老网站及OA、ERP等企业信息化系统还不得不继续提供服务,这就面临再无合适浏览器可用的窘境,现在是迫切需要一个具有良好兼容性、稳定可行的主流技术方案来彻底解决此问题的时候了。

二、 现有方案

结合当前各方面的信息,现有解决方案大体上有如下几类:

1. 以不变应万变方案,继续当鸵鸟,不升级操作系统和浏览器版本,避免无法使用的情况出现。虽然说这样也不是不可以,但会面临巨大的安全风险,因为使用的陈旧操作系统如Windows 7或低版本浏览器被发现和公开的漏洞越来越多且无法修复,随时可能被攻击或被利用导致业务系统停止运行和丢失敏感数据。况且此方案只适用于企业内部电脑数量少且固定的场景。对于类似网银这样为公众服务的网站或终端请求电脑数量多又经常变动的网站,用户的电脑操作系统和浏览器版本往往是不可控的,只能尽量主动去适配用户的电脑环境确保可用,否则每人一口唾沫也会把客服人员淹死。或许你会说让用户全部切换用手机APP或传统桌面客户端就行了,不再提供桌面网页版,暂且不说这种躲猫猫的懒政行为会对企业形象造成巨大伤害,企业网银的桌面网页版总不能也取消支持吧,因为在企业内网中使用桌面电脑的比例比较高,移动端由于屏幕大小所限或安全因素考虑,始终还是少数,而传统桌面客户端开发、部署、维护等又是个大麻烦。还有就是业务系统所用的电脑,时间长了可能坏掉或需要增加数量来使用,而这些新购电脑往往安装的是当前主流的操作系统,说不定哪天就无法降级安装老版系统来使用了。在2021年1月份就发生了一起因新购电脑自动安装了被Adobe公司突然停用的Flash Player软件版本导致大连车务段的现在车系统无法正常使用的事故,引起了广泛的舆论关注和网民的群嘲,幸运的是这些新购电脑还能安装旧版系统降级使用,但问题并未得到根本解决。

2. 采用浏览器扩展方案,比如Chrome、Edge等浏览器上的扩展程序商店中,可以下载安装国外开发商提供的IE Tab,但其商业用途是收费的。通过此扩展程序,可以在浏览器标签页中把某个网页整体用IE内核渲染显示,据统计这是在Chrome程序商店中付费用户最多的扩展,可见需求还挺强烈。不过由于国内的特殊网络环境,往往无法直接在线下载完成安装,对普通电脑用户来说这步就太难了。况且商业用途的话,企业内网常常是和外网阻断的,实施部署非常麻烦,而且网页需要切换到IE内核渲染时还需要用户手工点击一下,体验还是差了一些,也无法满足国内自主可控的要求。其售价也不低,因为是国外开发商,沟通交流存在障碍不说,采购流程也是漫长又繁琐的。好处是不需要修改网站代码,可支持主流版本的浏览器使用。

3. 双内核浏览器方案,国产典型的如360、QQ等浏览器,需要用IE内核来渲染的网页,可在地址栏右侧手工点击切换内核的闪电图标来完成重新加载显示。此方案虽然是免费的,不过代价是终端电脑用户可能会时常收到广告弹窗,防不胜防又无可奈何。这些浏览器往往也非常臃肿,因为夹带了不少和开发商利益相关的私货功能,另外其内置的Chromium内核版本往往不是最新的,也存在潜在的安全漏洞风险。最大的问题是这些浏览器在整个桌面浏览器的市场份额占比低,无法保证70%左右市场份额的Chrome浏览器可正常使用。此方案好处也是不需要修改网站代码,成本低。

4. 微软官方建议的方案,就是Edge的IE模式。笔者作为这方面的专业人士,在Edge最新的大众90版本上根据网上的相关教程也没实践出如何让某个网站用IE模式来渲染显示,诸位看官可出手试试,^_^。其复杂的设置如下图所示:

这个Chromium内核的Edge浏览器,在微软重金推广之下,目前市场占有率也还仅仅是个位数,或许正如微软自家网页翻译服务自动译为“边缘”浏览器的意思一直这样了,想要作为主要技术方案来实施还是太勉为其难,而且Edge只能模拟IE 11,说是差不多到2029年也要取消IE模式,而在64位系统上Edge的IE模式能否加载32位的ActiveX控件也是未知数,感觉就是不想让你用起来IE模式,微软为了让客户改用Edge也是无所不用其极啊。

5. 彻底改造方案,就是将无法在Chrome等浏览器中兼容运行的程序模块,比如ActiveX控件实现的功能改用比如HTML5、WebGL、WebAssembly等新技术重写。然而理想是好的,现实确是非常无奈的,由于Chrome等浏览器越来越收紧其开发接口,太多想要实现的功能很难做到。即使能实现,很可能功能实现不全,另外投入大、周期长,前端网页代码需要同步调整,运行性能也是很大的问题。就拿摄像头的RTSP实时视频流播放来说,IE中调用ActiveX控件来播放延迟在毫秒级,而在Chrome中只能采用转码方案播放延迟在秒级,相差数倍,往往无法满足安防行业的要求。此外还普遍存在ActiveX控件的调用方和ActiveX控件的开发方不是一家的情况,调用方想要实现替代ActiveX控件功能更是难上加难,而想要开发方公司提供替代组件往往也不可行,开发方失联或已经关门歇业也不是啥稀罕事。

三、 新方案

综合对比上述的各种方案,您会发现没有一个方案是可以令大家满意的。想要实现一个低成本、兼容性好、高性能、易于实施的自主可控解决方案,需要另辟蹊径。这个问题的根源还是因为Chromium等内核的浏览器不再支持DLL、ActiveX控件等原生程序的运行,新提供的PPAPI插件技术又因为太多限制迄今为止成功案例极少,很快会被取消支持。所以突破点就在于是否能在主流的Chrome、Firefox等浏览器之上实现一个通用的外接框架来支持这些原生程序的内嵌网页运行,并且可以自动响应浏览器的各种操作如窗口缩放、窗口移动、窗口关闭、网页滚动、标签页切换等。经过搜索发现有个成熟的半开源国产中间件软件(https://codechina.csdn.net/zorrosoft/pluginok)正好实现了,兼容性还很强,宣称是一个跨浏览器的原生小程序系统,同时提供了前端可自动安装、升级小程序的可控机制,重点还引入了调用方权限验证机制,可确保这些小程序的运行安全。这一整套技术方案具有较强的创新性和实用性,开发商还申请了软件发现专利保护。看到已经有不少公司采用,有的还是上市公司,笔者下载软件后赶紧联系客服开通权限免费试用了下,真的很神奇,运行效果完全和以前NPAPI插件实现的一样。下面是其实现原理图:

通过简单的技术分析和其文档介绍得知,这个就是在浏览器之外再搭建了一个和操作系统交互的通道用于支持DLL、ActiveX控件等原生程序的运行,完全不依赖浏览器自身的开发接口,这样就很好规避了浏览器升级可能造成技术方案失效的风险。而在浏览器中通过HTML5标准中的Web Socket技术和这个pluginok中间件及启动的原生小程序通讯,实现双向的命令请求和反馈机制。此方案的难点是要让外接的程序能够很好的模拟运行在网页中,实现内嵌网页运行的真实体验,可喜的是我们看到pluginok实现的效果令人满意,不仅仅支持有交互界面的窗口程序可内嵌运行,也可以对各种硬件设备的驱动DLL进行调用。开发商还发布了VLC网页播放小程序、桌面微软Office及金山WPS在线编辑系列小程序等,可以把Word、Excel等程序窗口直接完整内嵌到Chrome网页中运行。可以看出这个中间件的问世不仅仅是为解决老网站兼容运行的问题,而且是基于浏览器搭建了一个类似微信小程序那样的小程序生态系统,用于扩展浏览器的功能,让浏览器成为各种信息化系统集成的最佳容器,可彻底解决B/S系统的各种痛点和难点,让传统的C/S桌面程序迁移到浏览器中运行再无障碍。

具体到兼容老网站的方法,基于这个pluginok中间件提供了两种方案:第一种就是pluginok中间件搭配其官方发布的IE控件小程序,可以在Chrome等浏览器网页中通过脚本请求实现局部加载IE内核渲染的网页,成本低,前端改造小,部署可实现自主可控,这就比IE Tab扩展插件好太多了,当然缺点也是有的,这就是IE浏览器自身带来的了,加载运行时弹警告体验差、稳定性差、内存占用高,不想太折腾的老网站建议采用。第二种方案属于彻底改造方案,彻底抛弃IE内核,将原来的ActiveX控件或DLL等程序模块,基于pluginok中间件的二次开发接口封装为一个独立进程的小程序来运行。此方案前端改造大些,成本相对高,不过体验好,性能高,内存占用低,适合新开工项目采用。这两种方案都可以直接复用以前的DLL或ActiveX控件,无需其源码,这就大大节省了开发成本。第一种方案只需要修改网站前端代码,第二种同时还需要开发一个小程序,不过这个开发还是比较容易的,看介绍提供的是COM组件的友好接口,也可以委托开发,只是多一点成本,至少技术上是完全没问题的。

四、 总结

一个好的技术实施方案,首先是要满足客户的刚性需求,其次是尽量降低采购、开发、实施及维护的总成本,再次是要有良好的兼容性和稳定性,最后需尽量确保技术方案不能因为操作系统或浏览器的升级而失效。本文基于当前最新的技术信息和实践经验,给大家提供了基于pluginok中间件的两种新方案来解决老网站在Chrome等浏览器中的兼容使用问题,尤其适用于少改动以避免影响现有业务系统运行的场景,以供大家技术选型参考。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
算法和数据结构: 九 平衡查找树之红黑树
前面一篇文章介绍了2-3查找树,可以看到,2-3查找树能保证在插入元素之后能保持树的平衡状态,最坏情况下即所有的子节点都是2-node,树的高度为lgN,从而保证了最坏情况下的时间复杂度。但是2-3树实现起来比较复杂,本文介绍一种简单实现2-3树的数据结构,即红黑树(Red-Black Tree)
yaphetsfang
2020/07/30
3120
算法和数据结构: 九 平衡查找树之红黑树
红黑树是怎么实现的,看这篇真的就够了!
红黑树由来:在1972年由Rudolf Bayer发明的,当时被称为平衡二叉B树(symmetric binary B-trees),后来,在1978年被 Leo J. Guibas 和 Robert Sedgewick 修改为如今的红黑树,就此红黑树出现在软件开发者的视野里!
纯洁的微笑
2020/03/12
4K0
玩转红黑树:手把手教你实现和理解红黑树
相信学习过编程的都或多或多或少的听说过“红黑树”,在了解红黑树之前,需要明白它是一个二叉树,那么在哪些场景/地方使用过红黑树呢?
Lion Long
2024/08/19
2540
玩转红黑树:手把手教你实现和理解红黑树
动画 | 什么是红黑树?(基于2-3树)
学习过2-3树之后就知道应怎样去理解红黑树了,如果直接看「算法导论」里的红黑树的性质,是看不出所以然。我们也看看一颗二分搜索树满足红黑的性质:
我脱下短袖
2020/01/02
7940
Java架构核心基础知识硬核整理,赶快收藏起来吧!!!
  数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据结构往往同高效的检索算法和索引技术有关。接下来分别介绍下常见的数据结构类型。
用户4919348
2023/11/15
4330
Java架构核心基础知识硬核整理,赶快收藏起来吧!!!
Java数据结构与算法解析(十一)——红黑树
前面一篇文章介绍了2-3查找树,2-3查找树能保证在插入元素之后能保持树的平衡状态,最坏情况下即所有的子节点都是2-node,树的高度为lgN,从而保证了最坏情况下的时间复杂度。但是2-3树实现起来比较复杂,本文介绍一种简单实现2-3树的数据结构,即红黑树(Red-Black Tree)
老马的编程之旅
2022/06/22
4000
Java数据结构与算法解析(十一)——红黑树
数据结构(8)-- 图解红黑树
红黑树(Red Black Tree) 是一种自平衡二叉查找树,是在计算机科学中用到的一种数据结构。 红黑树是一种平衡二叉查找树的变体,它的左右子树高差有可能大于 1,所以红黑树不是严格意义上的平衡二叉树(AVL),但 对之进行平衡的代价较低, 其平均统计性能要强于 AVL 。 由于每一棵红黑树都是一颗二叉排序树,因此,在对红黑树进行查找时,可以采用运用于普通二叉排序树上的查找算法,在查找过程中不需要颜色信息。
看、未来
2021/09/18
3.4K0
面经手册 · 第6篇《带着面试题学习红黑树操作原理,解析什么时候染色、怎么进行旋转、与2-3树有什么关联》
Rudolf Bayer 于1978年发明红黑树,在当时被称为对称二叉 B 树(symmetric binary B-trees)。后来,在1978年被 Leo J. Guibas 和 Robert Sedgewick 修改为如今的红黑树。
小傅哥
2020/08/27
1K0
面经手册 · 第6篇《带着面试题学习红黑树操作原理,解析什么时候染色、怎么进行旋转、与2-3树有什么关联》
一篇文章搞懂红黑树的原理及实现2-3-4 Tree(2-3-4树)红黑树左倾红黑树的删除操作删除红黑树最小节点删除任意节点总结
二叉查找树(Binary Search Tree,简称BST)是一棵二叉树,它的左子节点的值比父节点的值要小,右节点的值要比父节点的值大。它的高度决定了它的查找效率。 我们知道二叉查找树。每个节点只可以有一个key,而2-3-4树就是将节点的key的数量增加,可以有多个key,并且2-3-4树可以保持完美平衡(Perfect balance. Every path from root to leaf has same length)
desperate633
2018/08/22
4.5K2
一篇文章搞懂红黑树的原理及实现2-3-4 Tree(2-3-4树)红黑树左倾红黑树的删除操作删除红黑树最小节点删除任意节点总结
彻底搞懂红黑树
红黑树性质 1、每个结点或是红色的,或是黑色的 2、根节点是黑色的 3、每个叶结点(NIL)是黑色的 4、如果一个节点是红色的,则它的两个儿子都是黑色的。 5、对于每个结点,从该结点到其叶子结点构成的所有路径上的黑结点个数相同。 和AVL树的比较 AVL树是一棵严格的平衡树,它所有的子树都满足二叉平衡树的定义。因此AVL树高被严格控制在XXX,因此AVL树的查找比较高效。但AVL树插入、删除结点后旋转的次数比红黑树多。 红黑树用非严格的平衡来降低插入删除时旋转的次数。 因此,如果你的业务中
大闲人柴毛毛
2018/03/09
1.1K0
彻底搞懂红黑树
红黑树深入浅出
先来看下算法导论对R-B Tree的介绍: 红黑树,一种二叉查找树,但在每个结点上增加一个存储位表示结点的颜色,可以是Red或Black。 通过对任何一条从根到叶子的路径上各个结点着色方式的限制,红黑树确保没有一条路径会比其他路径长出俩倍,因而是接近平衡的。
bear_fish
2018/09/20
6490
红黑树深入浅出
左倾红黑树、右倾红黑树、AA树,你不知道的还有很多!
上一节,我们一起从二叉树、二叉查找树、平衡树、AVL树、2-3树、2-3-4树、B树,一路讲到红黑树,最后得出红黑树的本质:红黑树就是2-3-4树,请看下图:
彤哥
2020/10/29
3K0
左倾红黑树、右倾红黑树、AA树,你不知道的还有很多!
通过2-3-4树理解红黑树
前言 红黑树是数据结构中比较复杂的一种,最近与它交集颇多,于是花了一周的空闲时间跟它死磕,终于弄明白并实现了红黑树。写文总结一下,希望能给试图理解红黑树的同学一些灵感,也让我能记得更深刻。 在研究红黑树时吃了不少苦头,原因有二: 红黑树的插入和删除非常复杂,很多人并没有理解或完全实现,或实现了的没有任何注释,让人很难参考; 网络上红黑树的理解方式较为单一,一般是 双黑、caseN 法,而插入和删除的情况很多,每种都有对应的处理方式,如果死记硬背的话,再过一段时间再回忆各种情况可能就一头雾水了。 网络上讲红黑
枕边书
2018/03/30
1.6K0
通过2-3-4树理解红黑树
【动态图文详解,史上最易懂的红黑树讲解】手写红黑树(Red Black Tree)
红黑树,Red-Black Tree 「RBT」是一个自平衡(不是绝对的平衡)的二叉查找树(BST)。
一个会写诗的程序员
2020/11/03
19.4K1
【动态图文详解,史上最易懂的红黑树讲解】手写红黑树(Red Black Tree)
面试问红黑树,我脸都绿了。。
红黑树是一个平衡的二叉树,但不是一个完美的平衡二叉树。虽然我们希望一个所有查找都能在~lgN次比较内结束,但是这样在动态插入中保持树的完美平衡代价太高,所以,我们稍微放松逛一下限制,希望找到一个能在对数时间内完成查找的数据结构。这个时候,红黑树站了出来。
Java技术栈
2019/11/08
1.5K0
面试问红黑树,我脸都绿了。。
JAVA学习-红黑树详解
红黑树是特殊的二叉查找树,又名R-B树(RED-BLACK-TREE),由于红黑树是特殊的二叉查找树,即红黑树具有了二叉查找树的特性,而且红黑树还具有以下特性:
乱敲代码
2019/07/09
7250
JAVA学习-红黑树详解
为什么有红黑树?什么是红黑树?看完这篇你就明白了
想必大家对二叉树搜索树都不陌生,首先看一下二叉搜索树的定义: 二叉搜索树(Binary Search Tree),或者是一棵空树,或者是具有下列性质的二叉树:若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值;若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值;它的左、右子树也分别为二叉排序树。 从理论上来说,二叉搜索树的查询、插入和删除一个节点的时间复杂度均为O(log(n)),已经完全可以满足我们的要求了,那么为什么还要有红黑树呢? 我们来看一个例子,向二叉搜索树中依次插入(1,2,3,4,5,6),插入之后是这样的
乔戈里
2020/02/13
4.8K0
为什么有红黑树?什么是红黑树?看完这篇你就明白了
红黑树
红黑树
Java架构师必看
2021/04/30
7070
红黑树
树结构系列(二):平衡二叉树、AVL树、红黑树
答案是:树的平衡。我们通过树的平衡,使得左右子树的深度保持在较小范围内,从而保证二叉树的查询效率。 这就是平衡二叉树的核心思想。 这种能平衡左右子树的二叉树,我们称之为平衡二叉树。
陈树义
2021/04/12
1.2K0
重温数据结构:深入理解红黑树
读完本文你将了解到: 什么是红黑树 黑色高度 红黑树的 5 个特性 红黑树的左旋右旋 指定节点 x 的左旋 右图转成左图 指定节点 y 的右旋左图转成右图 红黑树的平衡插入 二叉查找树的插入 插入后
张拭心 shixinzhang
2018/01/05
1.3K0
重温数据结构:深入理解红黑树
推荐阅读
相关推荐
算法和数据结构: 九 平衡查找树之红黑树
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档