首页 / 知识
浏览器内核以及浏览器兼容的问题分析
2023-04-11 15:20:00
一、浏览器内核
RenderingEngine,中文翻译过来名称很多,排版引擎、解释引擎、渲染引擎,现在流行称为浏览器内核。用来渲染网页内容的,将网页的内容和排版代码转换为可视的页面,一个浏览器可能不止有一个内核。
1、排版引擎
(1)Trident(Windows)360IE
(2)Gecko(跨平台)MozillaFirefox、MozillaSeaMonkey
(3)KHTML(Linux)Konqueror
(4)WebKit(跨平台)AppleSafari、Symbian系统浏览器
(5)Chromium(跨平台)Chromium、GoogleChrome、SRWareIron、ComodoDragon
(6)Presto(跨平台)Opera
浏览器 内核
IE、百度、世界之窗 Trident
chrome、opera chromium或称Blink
360、猎豹、2345浏览器 IE+chromium
Firefox Gecko
Safari Webkit
搜狗、遨游、QQ浏览器 trident+webkit
2、JavaScript引擎
(1)Chakra
查克拉,IE9启用的新的JavaScript引擎。
(2)SpiderMonkey/TraceMonkey/JaegerMonkey
SpiderMonkey应用在MozillaFirefox1.0-3.0,TraceMonkey应用在MozillaFirefox3.5-3.6版本,JaegerMonkey应用在MozillaFirefox4.0及后续的版本。
(3)V8
应用于Chrome、傲游3。
(4)Nitro
应用于Safari4及后续的版本。
(5)LinearA/LinearB/Futhark/Carakan
LinearA应用于Opera4.0-6.1版本,LinearB应用于Opera7.0~9.2版本,Futhark应用于Opera9.5-10.2版本,Carakan应用于Opera10.5及后续的版本。
(6)KJS
KHTML对应的JavaScript引擎。
3、单双核引擎
(1)Trident/Gecko双核浏览器
(2)Trident/WebKit双核浏览器
现在国内最主流的“双核”浏览器基本都是这个架构,360极速浏览器、世界之窗浏览器极速版、傲游3搜狗浏览器3、QQ浏览器、枫树浏览器、快快浏览器、百度浏览器、阿云浏览器(后期版本)、太阳花浏览器,其中最奇葩的是傲游3。其它双核浏览器都是基于Chromium的,而傲游是基于WebKit的,但是偏偏又用的是V8引擎。
(3)Trident/Gecko/WebKit三核浏览器
目前能见的应该就是日本的Lunascape,Avant增加了WebKit内核之后也会归类到这里。说实话,Lunascape真的很难用,真的很奇葩。各个内核相对独立,外壳本身不够强化,稳定性不高,所以还不如用回单核浏览器。
二、兼容性问题
对浏览器兼容问题,一般分,HTML,Javascript兼容,CSS兼容。其中html相关问题比较容易处理,无非是高版本浏览器用了低版本浏览器无法识别的元素,导致其不能解析,所以平时注意一点就是。特别是HTML5增加了许多新标签,低版本浏览器有点影响时代进步啊
1、css兼容
(1)不同浏览器的margin和padding的默认设置差距大,使用*{margin:0px;padding:0px;}
(2)ie6、7和遨游里这个标签的高度不受控制,超出自己设置的高度.在此标签中加入overflow:hidden
(3)图片默认有间距,使用float
(4)盒子坍塌,父元素加入(overflow:hidden;)变成BFC元素
(5)字体大小在不同浏览器里不一致,使用line-height:14px;指定高度
(6)IE6不支持png透明效果
(7)CSSHack兼容性属性设置
2、html兼容
HTML篇
(1)样式兼容性问题
<!--IE按Edge模式渲染-->
<metahttp-equiv="X-UA-Compatible"content="IE=Edge"/>
<!--IE8910按IE7模式渲染-->
<metahttp-equiv="X-UA-Compatible"content="IE=Emulate7"/>
(2)怪异模式
怪异模式是没有遵守W3C规范的一种兼容模式,其中的width是包括contentWidth,左右padding,左右border在内的全部范围(height也一样),类似于box-sizing:border-box;,而且table的font-size不能从父元素继承。以下情况会触发浏览器怪异模式(QuirksMode):
没写DOCTYPE触发怪异模式
在<!DOCTYPE...>前加<?xmlversion="1.0"encoding="utf-8"?>,IE6下会触发怪异模式
在<!DOCTYPE...>前加入<!--keepIE7inQuirksMode-->,IE7进入怪异模式
<!DOCTYPE...>前有任何非空字符,会在IE6下会触发怪异模式
<!DOCTYPE...>前有XML,在IE7下不会触发怪异模式,但不能有其他非空字符
检查document.compatMode,可以查看浏览器工作在哪个模式:值BackCompat为怪异模式,值CSS1Compat为标准模式
(3)display:inline-block元素间有间隙
<!--以下的li元素是display:inline;类型的-->
<!--这样写元素之间有间隙-->
<ul>
<li>apple</li>
<li>banana</li>
<li>pineapple</li>
<li>peach</li>
<li>orange</li>
</ul>
<!--换个写法解决问题-->
<ul>
<li>apple</li><li>
banana</li><li>
pineapple</li><li>
peach</li><li>
orange</li>
</ul>
(4)IE可能出现的文档样式短暂失效问题
<head>
<!--meta部分-->
<title></title>
<!--可能的script部分-->
<scripttype="text/javascript"></script><!--关键:添加一个空标签-->
<!--link部分-->
</head>
|
最新内容
相关内容
python如何读取列表中元素的位置?
python如何读取列表中元素的位置?,位置,数据,异常,培训,字符串,元素,索引,方法,示例,结果,python读取列表中元素位置的方法:1、使用index()方python中获取路径的三种方法
python中获取路径的三种方法,工作,代码,情况,培训,下来,路径,文件,也就是,桌面,目录,python中获取路径总结下来分为三种情况:1、获取工作目录python如何调用另一个文件夹中的内
python如何调用另一个文件夹中的内容?,系统,培训,文件,模块,内容,路径,函数,所在,前缀,语句,python中调用另外一个文件夹中的内容:1、同一文件python中怎么对一个数进行因式分解
python中怎么对一个数进行因式分解?,代码,培训,因式分解,因数,个数,最小,整数,数组,假定,分解,1、Python因式分解代码:importtime#对一个数进python怎么找出所有的数字?
python怎么找出所有的数字?,数字,培训,代码,小数点,小数,字符串,整数,表达式,含义,思路,python中获取字符串中所有数字的方法:1、使用正则表达如何在python代码中指定保存的文件
如何在python代码中指定保存的文件格式,代码,培训,文件格式,格式,二进制文件,文件,后缀,以上,方法,更多,python指定保存文件格式的方法:1、保Python如何复制文件中的内容
Python如何复制文件中的内容,盘中,数据,培训,文件,内容,方法,文件夹,路径,源文件,文件名,python复制文件中内容的方法:1、使用shutil.copyfilepython函数里面形参和实参一样吗?
python函数里面形参和实参一样吗?,培训,函数,参数,里面,变量,实际,形式,全称,示例,后面,python函数里面形参和实参不一样。形参全称是形式参实数是不是python的数据类型?
实数是不是python的数据类型?,数字,标准,培训,实数,数据类型,数轴,复数,有限小数,无理数,虚数,实数是python的数据类型。实数,是有理数和无理linux下怎么查看python的包
linux下怎么查看python的包,软件,培训,工具,管理,命令,格式,详细信息,下面,以上,参数,linux中可以使用piplist命令查看安装的python包。pip是python中的open函数如何编码?
python中的open函数如何编码?,数据,系统,可取,培训,文件,参数,函数,时候,表示,模式,python中的open函数可以通过在打开文件时添加encoding参python判断xml是否存在某一节点?
python判断xml是否存在某一节点?,数据,培训,节点,方法,结果,表达式,长度,以上,更多,内容,python中判断xml是否存在某一节点的方法:使用selectN