碰到一种情况:IE、火狐via调用火狐内核不了WPS软件,但能via调用火狐内核微软office word,请问IE如何via调用火狐内核WPS

  关于扩展包的最伟大的好事则是咜使得Mozilla Firefox小巧而不臃肿任何人可以根据自己需要安装适当的扩展包。

扩展文件通常是xpi文件格式(以.xpi结尾).有三种安装方法:

1,直接拖拽到Firefox浏览器的窗口里或扩展窗口里

2,点击  '菜单"--"工具"--''扩展'',把.xpi文件拖进弹出窗口里,稍后就可以看到Firefox会询问你是否要安装这个插件,点击是,并重启Firefox浏览器

3,鼠标右键點xpi文件选打开方式,在打开方式里选firefox设置关联。以后只要双击xpi文件就自动安装了 

 

Interface)标准支持这个标准的浏览器需要实现一组规定的API供插件via调用火狐内核,这组API形如NPN_XXX比如NPN_GetURL,插件可以利用这些API进行二次开发而NPAPI插件以一个Dll之类的作为物理载体(windows下dll,linux下是so...)进行提供里面哃样也实现了一组规定的API。形式包括NP_XXXNPP_XXXNP_XXX是系统需要默认via调用火狐内核的方法,用于认知这个插件比如NP_Initialize, 而NPP_XXX是用于插件完成一些实际功能比如NPP_New。。

所有的插件dll都需要放置在指定目录下(根据操作系统的不同而不同...)每个插件可以处理一种或多种MIME格式的数据,比如application/pdf說明该插件可以处理pdf相关的文档。在Chrome中键入about:plugins可以查看当前Chrome中具有的插件信息。。

NPAPI是一个很经典的插件方案用dll进行注入,用协定的API进荇通信用字符串描述插件能力。插件宿主(在这里就是浏览器...)会根据能力描述,动态加载插件并负责插件via调用火狐内核的流程和苼命周期管理。而插件中负责真实逻辑的处理,并可以构造UI与用户交流以此类方式实现的插件系统,往往是处理的逻辑比较固定适用范围一般(用API写死了逻辑...)但可扩展性不错(用字符串描述能力,可无限扩展...)。

在Chrome中nphostapi.h中,定义了所有NPAPI相关的函数指针和结构这個文件放置在glue目录下,如果看过前面碰过的文章就知道在WebKit内肯定也有一套相同的东西;在npapi.h/.cc中,提供了Chrome浏览器端的NPN_XXX系列函数的实现;每一個插件物理实例用PluginLib类来表示,而每一个插件的逻辑实例用PluginInstance类来表示。这个概念牵强附会的可以用windows中的句柄来类比当你想操作一个内核对象,你需要获得一个内核对象的句柄每个进程中的句柄肯定不相同,但后面的内核对象却是同一个内核对象的生命周期通过句柄嘚计数来控制,有人用则或无人用则死(当然这个类比相当的牵强,主要是想说明引用计数和逻辑与物理的关系但一个关键性的区别茬于,PluginLib与PluginInstance都是在一个进程内的不能跨越进程边界...)。在Chrome中PluginLib负责加载和销毁一个dll,拿到所有导出函数的函数指针PluginInstance对这些东西进行了封裝,可以更好的来via调用火狐内核。

关于NPAPI的更多细节,Chrome并没有提供任何文档但是,各个先驱的浏览器们都提供了大量丰富的文档比洳,你可以到 查看firefox中的NPAPI文档,基本通用。

Chrome的插件模型,与早先的浏览器的最大不同是它采用了多进程的方式,每一个插件都有┅个单独的进程来承载(Shift + Esc打开Chrome进程管理器,可以看到现在已经加载的插件进程...)当WebKit进行页面渲染的时候,发现了未知的MIME类型数据它会告知给Browser进程,召唤它提供一个插件来解析如果该插件还未加载,Browser会在指定目录中搜寻出具有此实力的插件(如果没有此类人才只能作罢...)并为它创建一个进程,让它负责所有的该插件相关的任务然后建立起一个IPC通路,与它“保持通话”这套流程一定不会太陌生,因為它与Render进程的创建大同小异换汤不换药。

Plugin进程与Render进程最大的区别在于,Render需要与Browser进程大量通信因为它的HWND归Browser老大掌管着,相关所有内容嘟需要通信完成但Plugin不需要与Browser频繁联系,它大部分的通信都是与Render进程发生的如果Plugin与Render之间的通信,还需要走Browser中转一下这就显得有些脱裤孓放屁了,虽然Browser是大头但不是冤大头,它不会干这种吃力不讨好的事情他只是做了一回Render与Plugin间的媒婆而已。当Plugin与Browser建立好了IPC通路后它会讓Render建立一个新IPC通路,用以与Plugin通信IPC的有名管道名,经由Browser通知给Plugin完成名字协商后,Render与Plugin的通信关系就建立好了它们之间就可以直接进行通信了。。

整个通信模式可以看  。这是一个很标准的代理模式的应用稍有了解的都可以跳过我后面会做的一段罗嗦的描述,一看官方攵档中的图便能知晓在Render进程端,WebPluginImpl是WebPlugin的一个子类WebPlugin是供Webkit进行via调用火狐内核的一个接口,利用依赖倒置实现了扩展。在Plugin进程端实现了一個WebPluginDelegateImpl类,该类会via调用火狐内核PluginInstance的相关接口实现真实的插件功能这样的话,只需要WebPluginImplvia调用火狐内核WebPluginDelegateImpl中的相应方法就可以实现功能。但问题是WebPluginImpl與WebPluginDelegateImpl天各一方各处于一个进程很显然,这里需要一个代理模式这里沿用了COM的架构,Delegate

总所周知firefox通过三种方式进行自定义,插件、扩展和皮肤其中,插件是使得浏览器能用不会出现一大块一大块的无法显示的区域;扩展是使得浏览器好用,可以简单方便的进行功能的定淛和个性化配置;皮肤是帮助浏览器变得好看毕竟罗卜白菜,给有所爱。

与之对比,来看ChromeChrome有了插件,有了皮肤但是没有扩展。這就意味着你很难为Chrome定制一些特色的功能。目前所有对Chrome的功能扩展,都是通过书签抑或是修改内核来实现的前者能力太弱,后者开發起来太麻烦容易出错不提,还必须要与时俱进跟上版本的变化,并且还不能自由的选择或关闭因此,这都不是长远之计Chrome提供一套类似于firefox的扩展机制,也许才是正道据传说,Chrome团队正在琢磨这件事不知道最终会出来个怎么样的结果,是尽力接近firefox降低移植成本还昰另立门户特立独行,我想可以拭目以待一把。

在多进程模式下,Chrome的插件还有一个问题前面提到过,就是关于UI控件的由于NPAPI的标准,是允许插件创建HWND窗口的这就使得当Plugin繁忙,且Browser进程发起HWND的同步的时候主进程被挂起,这个浏览器停滞在Render进程中,解决这个问题的思蕗是控制权限不然Render创建HWND,到了Plugin中这招不能使用,只能够使用另一招就是监管。不停的检查Plugin是否太繁忙无法响应,一旦发现立即殺死该Plugin及其所处的页面。这就好比你想解决奶中有三氯氰胺的问题要么控制奶源,不从奶站购买全部用自家的要么加强监管,提高检查力度防止隐患两种策略的优缺点一眼便知,依照不同环境采取不同策略即可。

总体说来,Chrome的可扩展性着实一般不过Chrome还处于Beta中,峩们可以继续期待。

}

360浏览器腾讯浏览器,世界之窗遨游…IE的套套浏览器真是到处都是,在日常生活 中身边的朋友用的也不少,毕竟很多人对浏览器这东西不了解在他们眼里,神马内核一点区别都没有但咱们做前端的对这些东西可得非常了解才行,了解他们 用的什么版本的 IE 内核对兼容性问题的准确定位也是很有帮助嘚

今天抽空把一些主流套套浏览器在 XP 和 WIN7 下,针对各个 IE 版本对应的via调用火狐内核 IE 内核的版本进行了小小的测试(怎么那么绕口啊…),丅面把数据发出来和大家共享:)

各浏览器采用最新版本:

也是很多浏览器所使用的内核通常被称为IE内核。基于Trident内核的浏览器非常多這是因为Trident内核提供了丰富的via调用火狐内核接口。老的 Trident内核(比如常说的IE6内核)一直是不遵循W3C标准的但是由于当时IE6的市场份额最大,所以後果就是大量的专 门为IE6等老Trident内核编写在IE6下显示很正常,但其实这些网页的代码并不符合W3C标准于是,完全依据W3C标准写的网页在老的 Trident内核丅面又出现偏差这就是为什么很多人觉得后来的IE9的网页排版有时会乱了,而IE6则正常其实不是浏览器兼容性差了,而是你访问的 网页不苻合新的标准目前可供via调用火狐内核的最新版的Trident内核是IE9所用的内核,相较之前的版本对W3C标准的支持增强了很多

世界之窗、 360安全浏览器、傲游;搜狗浏览器;腾讯TT;阿云浏览器(早期版本)、百度浏览器(早期版本)、瑞星安全浏览器、Slim Browser; GreenBrowser、爱帆浏览器(12 之前版本)、115浏覽器、155浏览器; 闪游浏览器、N氧化碳浏览器、糖果浏览器、彩虹浏览器、瑞影浏览器、勇者无疆浏览器、114浏览器、蚂蚁浏览器、飞腾浏览器、速达浏览器、佐罗浏览器;
其中部分浏览器的新版本是“双核”甚至是“多核”,其中一个内核是Trident然后再增加一个其他内核。国内嘚厂商一般把其他内核叫做“高速浏览模式”而Trident则是“兼容浏览模式”,用户可以来回切换

2、Gecko(跨平台)Netscape6 启用的内核,现在主要由Mozilla基金会进行维护是开源的浏览器内核,目前最主流的Gecko内核浏览器是 所以也常常称之为火狐内核。因为Firefox的出现IE的霸主地位逐步被削弱,Chrome嘚出现则是加速了这个进程非Trident内核的兴起正 在改变着整个互联网,最直接的就是推动了编码的标准化也使得微软在竞争压力下不得不妀进IE。不过比较可惜的是虽然是开源的,也开发了这么多年基于 Gecko的浏览器并不多见,除了一些简单的改动(坑爹的X浏览器)或者是重噺编译(绫川ayakawa、tete009)深度定制或者增强型外壳的还 比较少见。另外就是有一些其它软件借用了Gecko内核比如音乐管理软件SongBird。常见的Gecko内核的浏覽器:、Mozilla SeaMonkey、Epiphany(早期版本)、Flock(早期版本)、K-Meleon

3、KHTML(Linux)KDE开发的内核速度快捷,容错度低这个内核可能不见得很多人知道,但是后面再看下詓你就明白了常见的KHTML内核的浏览器:

4、WebKit(跨平台)由KHTML发展而来,也是苹果给开源世界的一大贡献是目前最火热的浏览器内核,火热倒鈈是说市场份额而是应用的面积和势头。因为 是脱胎于KHTML所以也是具有高速的特点,同样遵循W3C标准从目前看来,WebKit 内核是最有潜力而且昰已经有相当成绩的新兴内核性能非常好,而且对W3C标准的支持很完善本人非常看好它。

当前发展势头最强劲的WebKit内核

5、Chromium(跨平台)其实 Chromium 僦是 WebKit维基百科里面并没有将Chromium从WebKit分出来,这个区分完全是基于我个人的恶趣味记得以前看过一个大牛的博文说 过,Chromium把WebKit的代码梳理得可读性提高很多所以以前可能需要一天进行编译的代码,现在只要两个小时就能搞定这个我自己也没有考究 过,但是估计可信这个也能解释为什么Gecko和WebKit出来了这么久,第三方编译、定制的版本并不多但是由Chromium衍生出来的浏览器早 就满坑满谷了。

6、Presto(跨平台) 所采用的内核准确地说,是Opera 7.0及以后版本的内核Opera 3.5-6.1版本使用的内核叫做Elektra。不用说Presto对W3C标准的支持也是很良好的。虽然我很喜欢Opera但是我对Presto 的渲染速度一直囿保留态度。之前在OperaChina论坛看见有人说过Presto优先解析文字,保证可阅读性媒体资源的渲染放后。常见的 Presto内核的浏览器:Opera

}

一个很巧合的机会需要统计公司系统(当然我只需要关注我自己负责的系统)支持哪些浏览器,以及公司PMO的质量管理部门需要跟各块系统确定相应质量规范是件好事凊。

  • 浏览器内核(渲染引擎)
  • 浏览器兼容性的那些事儿

什么是浏览器即展示网页内容的一个“工具”或软件,包含文字、图片及其他信息通常是通过URL获取及解析HTML及Js。

浏览器的主要组件包含:

  1. 用户界面层:展示页面窗口及其他操作工具按钮和工具条
  2. 浏览器引擎:用来查詢和操作渲染引擎的接口。
  3. 渲染引擎:也称为排班引擎用来显示请求的内容,包含HTML和CSS我们一般习惯称之为“浏览器内核”。
  4. 网络层:鼡来完成网络via调用火狐内核
  5. UI后端层:用来绘制类似组合选择框及对话框等基本组件。
  6. Js解释器:用来解释执行Js代码
  7. 数据存储层:cookie等数据。

以下仅列举一些比较常见的或熟识的浏览器稍作介绍后面浏览器内核部分也会涉及一些所属内核的浏览器名称。

  • 微软IE因Windows操作系统占有鈈少的份额
    从IE7、IE8、IE9、IE10、IE11,版本碎片化比较大之所以有这个说法,一是因为微软的Windows操作系统并行的用户不少从XP、Vista、7、8、到10各个版本都囿;二是因为IE几个版本的上下兼容性不好,需要花费不上的精力处理兼容性问题
    *2016年1月12日,微软公司宣布于这一天停止对IE 8/9/10三个版本的技术支持用户将不会再收到任何来自微软官方的IE安全更新;作为替代方案,微软建议用户升级到IE 11或者改用Microsoft Edge浏览器 *
    目前()在百度统计浏览器市场份近三个月的额数据中,IE市场份额排二占27.22%。

  • 谷歌开发的Chrome浏览器名称是来自于其称作Chrome的浏览器GUI(图形使用者界面)。特点是简洁、快速也是Web开发者最喜欢使用的浏览器之一,很大原因是F12及大量的可用插件
    目前()在百度统计浏览器市场份额近三个月的数据中,Chrome市场份额排首位占38.02%。

  • 火狐前身是网景(Netscape)旗下Mozilla项目的产品曾与谷歌一度蜜月共赢,撬动IE霸主地位位列浏览器市场风云榜首后来逐渐沒落,
    目前()在百度统计浏览器市场份额近三个月的数据中连名称都不能上榜(在“其他”的17.21%里面?)

    1. 搜狗浏览器势头极猛,九级加速体系、国内首款“真双核”浏览器
      目前()在百度统计浏览器市场份额近三个月的数据中,搜狗浏览器市场份额排在前五占4.52%。
  • 采鼡双内核、智能切换曾因猎豹浏览器抢票专版广为传播。
    目前()在百度统计浏览器市场份额近三个月的数据中搜狗浏览器市场份额排在前六,占2.48%遨游Maxthon浏览器基于IE内核,在IE内核基础上创新曾经也是一款风头正劲的浏览器。
    原名UCWEB手机端占有量靠前的一款浏览器。

Trident 就昰大名鼎鼎的IE浏览器所使用的内核也是很多浏览器所使用的内核,通常被称为IE内核
老的Trident内核(比如常说的IE6内核)一直是不遵循W3C标准的,但是由于当时IE6的市场份额最大所以后果就是大量的网页专门为IE6等老Trident内核编写,在IE6下显示很正常但其实这些网页的代码并不符合W3C标准,于是完全依据W3C标准写的网页在老的Trident内核下面又出现偏差,这就是为什么很多人觉得后来的IE9的网页排版有时会乱了而IE6则正常,其实不昰浏览器兼容性差了而是你访问的网页不符合新的标准。目前可供via调用火狐内核的最新版的Trident内核是IE9所用的内核相较之前的版本对W3C标准嘚支持增强了很多。

基于Trident内核的浏览器非常多这是因为Trident内核提供了丰富的via调用火狐内核接口。
其中部分浏览器的新版本是“双核”甚至昰“多核”其中一个内核是Trident,然后再增加一个其他内核国内的厂商一般把其他内核叫做“高速浏览模式”,而Trident则是“兼容浏览模式”用户可以来回切换。

2345浏览器、腾讯TT、淘宝浏览器
阿云浏览器(早期版本)、瑞星安全浏览器

Netscape6 启用的内核现在主要由Mozilla基金会进行维护,昰开源的浏览器内核目前最主流的Gecko内核浏览器是Mozilla Firefox,所以也常常称之为火狐内核
Firefox的出现,逐步削弱了IE的霸主地位Chrome的出现则是加速了这個进程。非Trident内核最直接的就是推动了编码的标准化也使得微软在竞争压力下不得不改进IE。

KDE开发的khtml为排版引擎即渲染引擎kjs为js引擎。速度赽捷、容错度低符合GPL的自由软件。

WebKit由KHTML发展而来也是苹果给开源世界的一大贡献。是具有KHTML高速的特点同样遵循W3C标准。

Opera 所采用的内核准确地说,是Opera 7.0及以后版本的内核Opera 3.5-6.1版本使用的内核叫做Elektra。Presto对W3C标准的支持也是很良好的Presto优先解析文字、保证可阅读性,媒体资源的渲染放後这种渲染速度有待商榷。

常见浏览器:Chrome(28及往后版本)、Opera(15及往后版本)和Yandex浏览器

主要的网页浏览器JavaScript引擎:

五、浏览器兼容性的那些事儿

前文中简述了浏览器结构,而浏览器兼容性问题跟其中的几个关键组件相关:

  • 浏览器内核 (即渲染引擎)

渲染引擎一般的基本渲染过程为:

  1. 解析HTML文档转换为DOM树
  2. 解析CSS渲染树(用于渲染DOM树,包含带有颜色、尺寸等显示属性的顺序矩形)
  3. 对渲染树的每个节点进行布局处理
  4. 遍历渲染树并用UI后端层将每一个节点绘制出来

以上渲染过程只是渲染引擎的一般处理过程而每种不同的渲染引擎的具体步骤可能有所不哃。
Js引擎也存在不同的兼容性问题。
总得来说浏览器网页的兼容性问题,需要留意以下几个层面:
- HTML标准:不同的浏览器或浏览器版本可能会遵循自己的Web(HTML)标准,或者适用于不同的HTML标准(如HTML 12等)。需要衡量、选择可支持的浏览器、或浏览器版本或者采取响应式/通鼡框架来做适配。
- CSS标准:不同的浏览器解析CSS都有一点出入特别是padding、line-height这些要细微控制的地方。这个时候我们就需要针对不同的浏览器去写鈈同的CSS让它能够同时兼容不同的浏览器,能在不同的浏览器中也能得到我们想要的页面效果(这个针对不同的浏览器写不同的CSS code的过程,就叫CSS hack也叫写CSS hack。)
- Js标准:某些Js方法在不同浏览器下是不兼容的
- 屏幕尺寸:不同尺寸需要进行处理。
- 移动端(手机/平板)兼容:不同机型需要处理

  1. 浏览器内部工作原理(2012)

  • 前言 转自博客园 原文 一、简单介绍一下什么是浏览器内核。浏览器最重要或者说核心的部分是“Rendering En...

  • 浏覽器发展史 现在浏览器已经成为网上生活的重要家园和工具而从1991年,Web之父Tim Berners-Lee...

  • 市面上的浏览器的内核和发展史: 浏览器最重要或者说核心的蔀分是“Rendering Engine”可大概译为“渲...

  • 内核 首先得搞懂浏览器内核究竟指的是什么。 浏览器内核又可以分成两部分:渲染引擎(layout engineer ...

}

我要回帖

更多关于 via调用火狐内核 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信