2022年多浏览器兼容分析 .pdf
《2022年多浏览器兼容分析 .pdf》由会员分享,可在线阅读,更多相关《2022年多浏览器兼容分析 .pdf(21页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1 累积:技海拾贝|Cumulation 多浏览器兼容分析文:国际合作事业部苗志远程序员对于javascript都是有些瞧不上的心思,程序员只管实现功能,只要功能能用就行。然而随着WEB2.0的日益风行,网络用户越来越多,用户对于WEB 系统的评价标准已经不再简单停留于 “能用 ”的地步,而是要“好用 ”,这就对WEB 设计者提出了更高的要求:响应速度、兼容性、美观程度、交互性等等。1 概述W3C 对标准的推进,Firefox,Chrome,Safari ,Opera 的出现,结束了IE 雄霸天下的日子。然而,这对开发者来说,是好事,也是坏事。说它是好事,是因为浏览器厂商为了取得更多的市场份额
2、,会促使各浏览器更符合W3C标准, 而得到更好的兼容性,并且,不同浏览器的扩展功能( 例如-moz,-webkit开头的样式 ) ,对 W3C标准也是个推进;说它是坏事,因为,多个浏览器同时存在,这些浏览器在处理一个相同的页面时,表现有时会有差异。这种差异可能很小,甚至不会被注意到;也可能很大,甚至造成在某个浏览器下无法正常浏览。我们把引起这些差异的问题统称为“浏览器兼容性问题 ”。而正是这些 “浏览器兼容性问题” ,无形中给我们的开发增加了不少难度。从浏览器内核的角度来看,浏览器兼容性问题可分为以下三类:1. 渲染相关:和样式相关的问题,即体现在布局效果上的问题。2. 脚本相关:和脚本相关的
3、问题,包括JavaScript和 DOM 、BOM方面的问题。对于某些浏览器的功能方面的特性,也属于这一类。3. 其他类别:除以上两类问题外的功能性问题,一般是浏览器自身提供的功能,在内核层之上的,这里暂不讨论。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 21 页 - - - - - - - - - 2 2 浏览器内核要搞清楚浏览器内核是什么,首先应该先搞清楚浏览器的构成。简单来说浏览器可以分为 两部分, shell+ 内核。其中shell的种类相对比较多,内核则比较
4、少。Shell是指浏览器的外壳:例如菜单,工具栏等。主要是提供给用户界面操作,参数设臵等等。它是调用内核来实现各种功能的。内核才是浏览器的核心。内核是基于标记语言显示内容的程序或模块。也有一些浏览器并不区分外壳和内核。从 Mozilla将 Gecko 独立出来后,才有了外壳和内核的明确划分。目前主流的浏览器有IE6/7/8、Mozilla、FireFox 、Opera、Safari、Chrome、Netscape 等。2.1什么是浏览器内核浏览器内核又可以分成两部分:渲染引擎(layout engineer或者Rendering Engine)和JS 引擎。它负责取得网页的内容(HTML 、X
5、ML 、图像等等)、整理讯息(例如加入CSS等) ,以及计算网页的显示方式,然后会输出至显示器或打印机。浏览器的内核的不同对于网页的语法解释会有不同,所以渲染的效果也不相同。JS 引擎则是解析Javascript语言,执行javascript语言来实现网页的动态效果。最开始渲染引擎和 JS 引擎并没有区分的很明确,后来 JS 引擎越来越独立,内核就倾向于只指渲染引擎。有一个网页标准计划小组制作了一个ACID 来测试引擎的兼容性和性能。内核的种类很多,如加上没什么人使用的非商业的免费内核,可能会有10 多种,但是常见的浏览器内核可以分这四种:Trident、Gecko、 Presto、Webki
6、t 。2.2 渲染引擎Trident又称 MSHTML,是微软开发的渲染引擎(包含了Javascript引擎 JScript) ,目前很多浏览器都使用这个引擎,例如IE,MaxThon,TT,The World,360,搜狗浏览器, Maxthon( 最新版已经不使用) 等。Gecko 是 C+ 开发的, Open Source 的渲染引擎,包括了SpiderMonkey(Rhino)。主要的使用者有 Firefox,Netscape6及以上版本, MozillaSuite/SeaMonkey等 。Webkit是 苹 果 公 司 基 于KHTML 开 发 的 。 他 包 括Webcore 和J
7、avaScriptCore名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 21 页 - - - - - - - - - 3 (SquirrelFish,V8)两个引擎。主要的使用者有Safari ,Chrome。Presto 由 Opera Software公司开始的, 用于 Opera 的渲染引擎。 Macromedia Dreamweaver (MX版本及以上) 和 Adobe Creative Suite 2 也使用了 Presto 的内核。主要的使用者为Opera
8、7及以上。2.3 JS引擎JavaScript最初由网景公司的Brendan Eich 设计,是一种动态、弱类型、基于原型的语言,内臵支持类。以它为基础,制定了ECMAScript 标准。他的起源并不是如Javascript高级程序设计 书中所述,是 Brendan Eich 自主发明的。 (参考 aimingoo 的考证文章)JavaScript在浏览器的实现中还必须含有DOM 和 BOM 。Web浏览器一般使用公共API 来创建主机对象来负责将 DOM 对象反射进JavaScript。2.4 文档类型声明源码的顶部都会有DocType声明, 在遵循标准的任何Web文档中, DOCTYPE
9、都是一项必需的元素。它会影响代码验证,并决定了浏览器最终如何显示你的web文档。在默认情况下,FF 和 IE 的解释标准是不一样的,也就是说,假如一个网页没有声明DOCTYPE,它就会以默认的DOCTYPE 解释下面的HTML 。在同一种标准下,不同浏览器的解释模型都有所差异,假如声明标准不同,差异更大。一、什么是DOCTYPE DOCTYPE 是 Document Type(文档类型) 的简写, 在页面中, 用来指定页面所使用的XHTML(或者 HTML )的版本。 要想制作符合标准的页面,一个必不可少的要害组成部分就是DOCTYPE声明。只有确定了一个正确的DOCTYPE,XHTML 里的
10、标识和CSS才能正常生效。二、 DOCTYPE 的规则DOCTYPE 声明的写法遵循一定的规则,它指出阅读程序应该用什么规则集来解释文档中的标记。在Web 文档的情况下,“阅读程序 ”通常是浏览器或者校验器这样的一个程序,“规则”则是 w3c 所发布的一个文档类型定义(dtd )中包含的规则。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 21 页 - - - - - - - - - 4 每个 dtd 都包括标记、 attributes、properties等内容,它们用
11、于标记web文档的内容;此外还包括一些规则,它们规定了哪些标记能出现在其他哪些标记中。每个 web建议标准 (比如 html 4 frameset和 xhtml 1.0 transitional)都有自己的dtd 。 声明位于文档中的最前面的位臵,处于 标签之前。此标签可告知浏览器文档使用哪种HTML 或 XHTML 规范。该标签可声明三种DTD 类型,分别表示严格版本、过渡版本以及基于框架的HTML 文档。以下面这个 标签为例: 在 上 面 的 声 明 中 , 声 明 了 文 档 的 根 元 素 是html, 它 在 公 共 标 识 符 被 定 义 为-/W3C/DTD XHTML 1.0
12、Strict/EN 的 DTD 中进行了定义。浏览器将明白如何寻找匹配此公共标识符的DTD 。如果找不到,浏览器将使用公共标识符后面的URL 作为寻找DTD 的位臵。提示和注释:注释: 标签没有结束标签!2.4.1 HTML HTML 4.01 规定了三种文档类型:Strict 、Transitional 以及 Frameset。HTML Strict DTD 如果您需要干净的标记,免于表现层的混乱,请使用此类型。请与层叠样式表(CSS )配合使用:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - -
13、 - - 第 4 页,共 21 页 - - - - - - - - - 5 HTML Transitional DTD Transitional DTD 可包含W3C 所期望移入样式表的呈现属性和元素。如果您的读者使用了不支持层叠样式表(CSS )的浏览器以至于您不得不使用HTML 的呈现特性时,请使用此类型: Frameset DTD Frameset DTD 应当被用于带有框架的文档。除frameset 元素取代了body 元素之外, Frameset DTD 等同于Transitional DTD: 2.4.2 XHTML XHTML 1.0 规定了三种XML 文档类型: Strict
14、、Transitional 以及 Frameset。XHTML Strict DTD 如果您需要干净的标记,免于表现层的混乱,请使用此类型。请与层叠样式表(CSS )配合使用: XHTML Transitional DTD Transitional DTD 可包含W3C 所期望移入样式表的呈现属性和元素。如果您的读者使用了不支持层叠样式表(CSS )的浏览器以至于您不得不使用XHTML 的呈现特性时,请使用此类型: XHTML Frameset DTD 当您希望使用框架时,请使用此DTD ! 如需检查你是否编写了带有正确DTD 的合法XHTML 文档,您可以把您的XHTML 页面链接到一个XH
15、TML 验证器。CSS Validation Service(W3C CSS验证服务是由W3C 制作的一个免费软件,用于帮助Web设计者检查层叠样式表(CSS) 远程地址: http:/jigsaw.w3.org/css-validator/本地安装教程详见:http:/jigsaw.w3.org/css-validator/DOWNLOAD.html 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 21 页 - - - - - - - - - 7 3 渲染兼容3.1 网
16、页排版经年以来,许多优秀的文章都在赞美着基于CSS 设计的优越,哀叹着基于表格设计的没落。表格出现以前, Web 本是个相当乏味的地方,正是使用表格排版,才打开了可视化的页面设计的新局面。表格对于Web 和 Web 设计领域普及的贡献到底有多大或许有争议,但一旦离开表格,我们这些网页设计师们必会失去工作,却是毋庸臵疑的。近年来基于表格的设计确实被妖魔化了,Web 纯化论者会告诉你,表格对排版毫无意义,因而你绝不能用到它。然而历史证明,许多技术一开始是为了实现某个目标设计的,却在别的领域发现了更大的用场而大展身手。就像Web 本身,一开始不也只是为了共享研究数据的,现在在娱乐和商业方面的应用却与
17、信息与教育方面的并驾齐驱了。Web 设计师们多年以来都在使用表格排版页面,这是绝大部分设计师都已掌握的能力。如此地使用表格能保证你获得预想的效果,通过一些简单的hack ,比如间隔gif , 我们几乎 一 定 能保 证 我们 的 站点 在 最 广泛 的Web 浏览 器 上 看起 来 都一 样 ,从 最 低 版本的Netscape 4到 Safari 这样的现代浏览器。尽管先驱者们早已宣传了好久Web 标准, 大部分的网站还是使用表格和不兼容标准的代码开发的,因此用户代理就不得不在很长一段时间内支持基于表格的排版方式。这对于Web 标准的卖点来说,是个致命的打击:标准没有标准应有的地位。不大可能
18、会出现下面这种情况, 某个主要的浏览器厂商( 唔,还是说Microsoft) 突然发布了一个大部分网站都显示不了的浏览器。所以网页设计者们总感觉不到开始使用基于CSS 排版和支持标准的代码的那种危机感和必要性。严格意义来说, table和 div 都是可用合理的布局方法,你不能否认table的价值,或者div 只有优点没有缺点。可以说web架构即可以使用table也可以 div 。那么关键就是你对你的 web 需求的定位。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 2
19、1 页 - - - - - - - - - 8 我们需要考虑到web页面给我们的site会带来多大的影响。如我们的site针对的海量的访问,海量的数据, (当然 cache问题这里不讨论)那么在构架上通常会减少table使用量,尤其是大量的循环的时候,当然table也是有用的。对于复杂的site 来说, div+css有时候很难准确定义出我们所表达的内容这时候table就是很好的选择。这也是开发前要考虑的问题,在要达到开发目的的同时保证所需要的成本。同样用div+css来实现一个结构复杂的 page 时往往不如用一个table就能简单得搞定。table和 div 有其各自得特征。这也意味着他们
20、价值取向有不同,对于开发设计的人员来说很重要的。table可以很容易建立起结构化的界面,通过table自身的参数定义,我们能把页面布局很快定义成我们所需要的效果。当然css 的配合就可以相对减少。缺点就是扩展性和可读性相对较差,扩展性差表现在维护和修正上面,一个复杂的table布局的site ,她的海量页面在随着需求变化下,开发人员将一筹莫展, 大量的修改需求会把web 的界面开发工作彻底粉碎。可读性差,这个也是相对来说。table 在表现上更加“ 严谨 ” ,有局限性。在表现复杂的结构时会非常难懂。往往我们的website 的程序内容又十分庞大,对开发人员来说要把代码马上从头脑中有清晰的轮廓
21、十分不易。div 呢,在 html 语法中我们知道div 的含有和作用,如果用它来实现布局页面的话,几乎完全要靠 css来支撑,可以说div 不能单独使用,尤其是针对性强的 web,给用户视觉上的效果要求十分严格,div 的使用要配合专业的css 参数来实现。从前面的例子可以看出div 布局更加灵活, 能简单也能够复杂。相同的显示效果在css和 div 的配合上可以产生不同的搭配方式。扩展性强是她的优点,开发设计人员只要对相应的css 做调整就能让布局焕然一新,这 点是 table 远远不及的。但在对结构相对复杂的局部,往往div+css 开发难度高,一个简单效果div 和 css要写半天,这
22、点table 就好很多了,用 dw 之类的所见即所得的软件下我们可以轻易做出用 div+css 写半天才能做出的东西。而且, table和 div 在兼容问题中,table更具有优势。我们常用的ie ,ff 浏览器对div css设臵上非常挑剔,往往同一个css 在 2 种浏览器上会有不同的结果,对开发人员来说是个可怕的问题。我们不可能对用户的浏览器进行排斥,因此只有通过在开发的时候调整我们的语法和布局方法。div 要求我们严格css 支持,而 table名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - -
23、- - - - 第 8 页,共 21 页 - - - - - - - - - 9 可以不用考虑这么多。 table的严谨在不同浏览器中得到了很好的表现。在考虑我们的定位,特征,兼容问题后, 如何布局, 采用何种构架方案我想大家心里应该都很清楚了,我想说对于真正的开发者来说善用其利是最重要的理念。而不是一味偏好,或者体现自己技术能力来做开发设计工作。对于 div 我们可以充分发挥其灵活清晰的架构特性,配合 table的严谨来实现各种web page的需求3.2 CSS兼容为控件指定样式时,最好采用形式与页面分离的方法,即引用css 文件的方法。1. 若子元素的高度高于父控件,最好不要指定父元素的
24、高度2.IE6下默认的字体尺寸大致在12 - 14px 之间,当你试图定义一个高度小于这个默认值的div 的时候,IE 会固执的认为这个层的高度不应该小于字体的行高。所以即使你用height: 6px; 来定义了一个div 的高度,实际在IE 下显示的仍然是一个12 px 左右高度的层。要解决这个问题,可以强制定义该div 的字体尺寸,或者定义overflow 属性来限制div 高度的自动调整。比如 或者 都可以阻止IE 的自作聪明。3. 利用 style=”为控件直接设臵样式时不要重复,例如个别浏览器会只解析一个4.标签的 alt 属性,在 IE 中,alt 属性相当于title属性,鼠标悬
25、浮于上时才会显示的提示信息。在firefox中 alt 则是图片不存在时显示的替代文字,其它chrome、opera 、safari则不支持 alt 属性,所以尽量用title来表现提示信息5.FF 下给 div 设臵 padding 后会导致 width 和 height增加, 但 IE 不会 .( 可用 CSSHacker解决 ) 6. 居中问题 : 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 21 页 - - - - - - - - - 10 1).垂 直 居
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年多浏览器兼容分析 2022 浏览器 兼容 分析
限制150内