常见浏览器兼容性问题汇总.doc

合集下载

浏览器兼容性汇总

浏览器兼容性汇总

➢J AVA S CRIPT (3)1.HTML对象获取问题 (3)2.const问题 (3)3.与问题 (3)4.问题 (3)5.frame问题 (3)6.模态和非模态窗口问题 (4)7.firefox与IE的父元素(parentElement)的区别 (4)8.document.formName.item(”itemName”) 问题 (4)9.集合类对象问题 (4)10.自定义属性问题 (5)11.属性问题 (5)12.问题 (5)13.body载入问题 (5)14.事件委托方法 (6)15.Table操作问题 (6)16.对象宽高赋值问题 (6)➢CSS (6)1.cursor:hand VS cursor:pointer (6)2.innerText在IE中能正常工作,但在FireFox中却不行. (6)3.CSS透明 (7)4.css中的width和padding (7)5.FF和IE BOX模型解释不一致导致相差2px (7)6.IE5 和IE6的BOX解释不一致 (7)7.ul和ol列表缩进问题 (7)8.元素水平居中问题 (8)9.Div的垂直居中问题 (8)10.margin加倍的问题 (8)11.IE与宽度和高度的问题 (8)12.页面的最小宽度 (8)13.DIV浮动IE文本产生3象素的bug (8)14.IE捉迷藏的问题 (9)15.float的div闭合;清除浮动;自适应高度 (9)16.高度不适应 (10)17.IE6下图片下有空隙产生 (10)18.对齐文本与文本输入框 (10)19.LI中内容超过长度后以省略号显示 (11)20.为什么web标准中IE无法设置滚动条颜色了 (11)21.为什么无法定义1px左右高度的容器 (11)22.链接(a标签)的边框与背景 (12)23.超链接访问过后hover样式就不出现的问题 (12)24.FORM标签 (12)25.属性选择器(这个不能算是兼容,是隐藏css的一个bug) (12)26.为什么FF下文本无法撑开容器的高度 (12)➢J AVA S CRIPT1.HTML对象获取问题FireFox:或者document.getElementById("idName").解决办法:统一使用document.getElementById("idName");2.const问题说明:Firefox下,可以使用const关键字或var关键字来定义常量;IE下,只能使用var关键字来定义常量.解决方法:统一使用var关键字来定义常量.3.与问题说明:IE下,event对象有x,y属性,但是没有pageX,pageY属性;Firefox下,event对象有pageX,pageY属性,但是没有x,y属性.解决方法:使用mX(mX = event.x ? event.x : event.pageX;)来代替IE下的或者Firefox下的event.pageX.4.问题说明:IE或者下,可以使用或下,只能使用window.location.解决方法:使用来代替window.location.href.5.f rame问题以下面的frame为例:<frame src="xxx.html" id="frameId" name="frameName" />(1)访问frame对象:IE:使用或者来访问这个frame对象. frameId和frameName可以同名。

浏览器兼容性问题及解决方案

浏览器兼容性问题及解决方案

浏览器兼容新问题W3C对标准的推进,Firefox,Chrome,Safari,Opera的出现,结束了IE雄霸天下的日子。

然而,这对开发者来说,是好事,也是坏事。

说它是好事,是因为浏览器厂商为了取得更多的市场份额,会促使各浏览器更符合W3C标准,而得到更好的兼容性,并且,不同浏览器的扩展功能(例如 -moz,-webkit开头的样式),对W3C标准也是个推进;说它是坏事,因为,多个浏览器同时存在,这些浏览器在处理一个相同的页面时,表现有时会有差异。

这种差异可能很小,甚至不会被注意到;也可能很大,甚至造成在某个浏览器下无法正常浏览。

我们把引起这些差异的问题统称为“浏览器兼容性问题”。

而正是这些“浏览器兼容性问题”,无形中给我们的开发增加了不少难度。

从浏览器内核的角度来看,浏览器兼容性问题可分为以下三类:1. 渲染相关:和样式相关的问题,即体现在布局效果上的问题。

2. 脚本相关:和脚本相关的问题,包括JavaScript和DOM、BOM方面的问题。

对于某些浏览器的功能方面的特性,也属于这一类。

3. 其他类别:除以上两类问题外的功能性问题,一般是浏览器自身提供的功能,在内核层之上的。

例如下面的页面,是一个渲染相关的问题:在各个浏览器中都表现的不同,这就属于兼容性问题。

造成浏览器兼容性问题的根本原因就是浏览器各浏览器使用了不同的内核,并且它们处理同一件事情的时候思路不同。

现今常见的浏览器及其排版引擎(又称渲染引擎)及脚本引擎,如下:而造成浏览器兼容性问题的常见原因则是设计师写出了不规范的代码,不规范的代码会使不兼容现象更加突出。

例如:不规则的嵌套:DIV 中直接嵌套 LI 元素是不合标准的,LI 应该处于 UL 内。

此类问题常见的还有 P 中嵌套 DIV, TABLE 等元素。

不规范的DOM接口和属性设置:上面代码中top的值,其实应该是一个字符串值,需有单位。

例如:35px。

总之,人为的原因也占很大一部分。

浏览器不兼容原因及解决办法

浏览器不兼容原因及解决办法

1.文字本身的大小不兼容。

同样是font-size:14px的宋体文字,在不同浏览器下占的空间是不一样的,ie下实际占高16px,下留白3px,ff 下实际占高17px,上留白1px,下留白3px,opera下就更不一样了。

解决方案:给文字设定line-height。

确保所有文字都有默认的line-height 值。

这点很重要,在高度上我们不能容忍1px 的差异。

2.ff下容器高度限定,即容器定义了height之后,容器边框的外形就确定了,不会被内容撑大,而ie下是会被内容撑大,高度限定失效。

所以不要轻易给容器定义height。

3.还讨论内容撑破容器问题,横向上的。

如果float 容器未定义宽度,ff下内容会尽可能撑开容器宽度,ie下则会优先考虑内容折行。

故,内容可能撑破的浮动容器需要定义width。

小实验:有兴趣大家可以看看这段实验。

在不同浏览器下分别测试以下各项代码。

a.<div style=”border:1px solid red;height:10px”></div>b.<divstyle=”border:1px solid red;width:10px”></div>c.<div style=”border:1px solid red;float:left”></div>d.<div style=”border:1px solid red;overflow:hidden”></div>上面的代码在不同浏览器中是不一样的,实验起源于对小height 值div 的运用,<div style=”height:10px;overflow:hidden”></div>,小height 值要配合overflow:hidden一起使用。

实验好玩而已,想说明的是,浏览器对容器的边界解释是大不相同的,容器内容的影响结果各不相同。

浏览器兼容性问题解决方案汇总

浏览器兼容性问题解决方案汇总

浏览器兼容性问题解决方案汇总浏览器兼容性问题解决方案汇总【来源:小鸟云计算】Ps.小鸟云,国内专业的云计算服务商普及:浏览器的兼容性问题,往往是个别浏览器(没错,就是那个与众不同的浏览器)对于一些标准的定义不一致导致的。

俗话说:没有IE就没有伤害。

贴士:内容都是自己总结的,不免会出现错误或者bug,欢迎更正和补充,本帖也会不断更新。

Normalize.css不同浏览器的默认样式存在差异,可以使用Normalize.css 抹平这些差异。

当然,你也可以定制属于自己业务的reset.css <="" bdsfid="71" href="https:///normalize/7.0.0/normalize.min.c ss" p=""/>rel="stylesheet">简单粗暴法* { margin: 0; padding: 0; }html5shiv.js解决ie9 以下浏览器对html5 新增标签不识别的问题。

respond.js解决ie9 以下浏览器不支持CSS3 Media Query 的问题。

picturefill.js解决IE 9 10 11 等浏览器不支持标签的问题IE 条件注释IE 的条件注释仅仅针对IE浏览器,对其他浏览器无效IE 属性过滤器(较为常用的hack方法)针对不同的IE 浏览器,可以使用不同的字符来对特定的版本的IE 浏览器进行样式控制imageimage浏览器CSS 兼容前缀-o-transform:rotate(7deg); // Opera-ms-transform:rotate(7deg); // IE-moz-transform:rotate(7deg); // Firefox-webkit-transform:rotate(7deg); // Chrometransform:rotate(7deg); // 统一标识语句a 标签的几种CSS 状态的顺序很多新人在写a 标签的样式,会疑惑为什么写的样式没有效果,或者点击超链接后,hover、active 样式没有效果,其实只是写的样式被覆盖了。

分享网页兼容性问题解决方法大全

分享网页兼容性问题解决方法大全

!important 优先级兼容IE61.div的垂直居中问题2. margin加倍的问题3.浮动ie产生的双倍距离4 .IE与宽度和高度的问题 IE 不认得min-这个定义5. 页面的最小宽度 min -width是个非常方便的CSS命令6.DIV浮动IE文本产生3象素的bug 左边对象浮动7.IE捉迷藏的问题8.float的div闭合;清除浮动;自适应高度;11.高度不适应1.div的垂直居中问题 vertical-align:middle; 将行距增加到和整个DIV 一样高 line-height:200px; 然后插入文字,就垂直居中了。

缺点是要控制内容不要换行2. margin加倍的问题设置为float(浮动)的div在ie下设置的margin 会加倍。

这是一个ie6都存在的bug(臭虫)。

解决方案是在这个div里面加上display:inline;例如: <#div id=”imfloat”> 相应的css为 #IamFloat{ float:left; margin:5px;/*IE下理解为10px*/ display:inline;/*IE下再理解为5px*/}3.浮动ie产生的双倍距离 #box{ float:left; width:100px; margin:0 0 0 100px; //这种情况之下IE会产生200px的距离 display:inline; //使浮动忽略} 这里细说一下block与inline两个元素block元素的特点是,总是在新行上开始,高度,宽度,行高,边距都可以控制(块元素);Inline 元素的特点是,和其他元素在同一行上,不可控制(内嵌元素); #box{ display:block; //可以为内嵌元素模拟为块元素display:inline; //实现同一行排列的效果diplay:table;4 IE与宽度和高度的问题 IE 不认得min-这个定义,但实际上它把正常的width和height当作有min的情况来使。

常见浏览器兼容问题处理办法

常见浏览器兼容问题处理办法

常见浏览器兼容处理办法希望以兼容模式打开<metahttp-equiv="X-UA-Compatible"content="IE=8"><!--以IE8模式渲染--><metahttp-equiv="X-UA-Compatible"content="IE=7"><!--以IE7模式渲染-->EDGE 以最接近的新版本<metahttp-equiv="X-UA-Compatible"content="IE=9; IE=8; IE=7; IE=EDGE">Js判断浏览器类型:浏览器兼容问题一:不同浏览器的标签默认的外补丁和内补丁不同问题症状:随便写几个标签,不加样式控制的情况下,各自的margin 和padding差异较大。

碰到频率:100%解决方案:CSS里*{margin:0;padding:0;}备注:这个是最常见的也是最易解决的一个浏览器兼容性问题,几乎所有的CSS文件开头都会用通配符*来设置各个标签的内外补丁是0。

浏览器兼容问题二:块属性标签float后,又有横行的margin情况下,在IE6显示margin 比设置的大问题症状:常见症状是IE6中后面的一块被顶到下一行碰到频率:90%(稍微复杂点的页面都会碰到,float布局最常见的浏览器兼容问题)解决方案:在float的标签样式控制中加入display:inline;将其转化为行内属性备注:我们最常用的就是div+CSS布局了,而div就是一个典型的块属性标签,横向布局的时候我们通常都是用div float实现的,横向的间距设置如果用margin实现,这就是一个必然会碰到的兼容性问题。

浏览器兼容问题三:设置较小高度标签(一般小于10px),在IE6,IE7,遨游中高度超出自己设置高度问题症状:IE6、7和遨游里这个标签的高度不受控制,超出自己设置的高度碰到频率:60%解决方案:给超出高度的标签设置overflow:hidden;或者设置行高line-height 小于你设置的高度。

浏览器兼容性问题总结罗淑芬

浏览器兼容性问题总结罗淑芬

同维电子有限公司无线事业部拟制人时间罗淑芬2014年9月4号浏览器兼容性问题总结浏览器兼容性问题总的概括为不同浏览器、平台、技术带来的不兼容问题。

浏览器内核各品牌浏览器的内核是不同的,不同的内核处理同一段代码的时候思路不同。

因此可以说,浏览器间内核的差异是产生兼容性问题的根本原因:所以我们在版本全面测试时选用的主要浏览器就是以上四种。

在测试过程常遇到的兼容性问题:1,不同内核的浏览器中文件选择控件的外观也不相同:例如使用安卓手机开启DUT管理页面会出现控件显示比较小。

2,JS脚本运行异常,在页面弹出错误提示3,框架或布局显示问题4,页面显示乱码对浏览器兼容性问题分析步骤:1)检查问题是否可重现2)试着隔离错误,查看同类型浏览器其他版本是否有此问题,其他浏览器是否有此问题,不同的平台是否存在此问题。

3)对问题进行归纳。

同一个问题是否出现在其他的模块或其他的地方?4)对比,对比之前的版本或竞品下面分别介绍在netgear repeater中浏览器兼容性问题的现象:不同内核的浏览器中文件选择控件的外观也不相同netgear repeater测试过程中出现安卓手机自带浏览器(I9220)使用设置向导时,勾选框太小,勾选与不勾选不易区分,如下图:iphone手机登录repeater运行设置向导,页面中涉及到下拉框的地方字体都太小了问题原因:1)自带控件更改不了大小,需要用图片代替,2)下拉框子字体大小未调节。

JS脚本运行异常,在页面弹出错误提示在netgear repeater测试时备份配置IE8版本弹出下面错误提示框架或布局显示问题IE8安全选项选择WPA2-PSK中间空白间隙较大,在火狐和safari上没有此问题IE8上框架显示滚动条,IE9没有页面显示乱码问题:safari浏览器打开管理页面选择语言部分,显示国家有乱码关于IE各版本的兼用性测试:在netgear repeater全面测试中浏览器兼容性测试是是由IE7逐步升级到IE11,后来才发现其实IE11自带的工具也可以实现浏览器兼容性测试。

46种常见的浏览器兼容性问题大汇总

46种常见的浏览器兼容性问题大汇总

浏览器兼容性问题大汇总Ø JavaScript 31. HTML对象获取问题32. const问题33. event.x与event.y问题34. window.location.href问题35. frame问题36. 模态和非模态窗口问题37. firefox与IE的父元素(parentElement)的区别38. document.formName.item(”itemName”) 问题39. 集合类对象问题310. 自定义属性问题311. input.type属性问题312. event.srcElement问题313. body载入问题314. 事件委托方法315. Table操作问题316. 对象宽高赋值问题3Ø CSS 31. cursor:hand VS cursor:pointer 32. innerText在IE中能正常工作,但在FireFox中却不行. 33. CSS透明34. css中的width和padding 35. FF和IE BOX模型解释不一致导致相差2px 36. IE5 和IE6的BOX解释不一致37. ul和ol列表缩进问题38. 元素水平居中问题39. Div的垂直居中问题310. margin加倍的问题311. IE与宽度和高度的问题312. 页面的最小宽度313. DIV浮动IE文本产生3象素的bug 314. IE捉迷藏的问题315. float的div闭合;清除浮动;自适应高度316. 高度不适应317. IE6下图片下有空隙产生318. 对齐文本与文本输入框319. LI中内容超过长度后以省略号显示320. 为什么web标准中IE无法设置滚动条颜色了321. 为什么无法定义1px左右高度的容器322. 链接(a标签)的边框与背景323. 超链接访问过后hover样式就不出现的问题324. FORM标签325. 属性选择器(这个不能算是兼容,是隐藏css的一个bug) 326. 为什么FF下文本无法撑开容器的高度3Ø JavaScript1. HTML对象获取问题FireFox:document.getElementById("idName");ie:document.idname或者document.getElementById("idName").解决办法:统一使用document.getElementById("idName");2. const问题说明:Firefox下,可以使用const关键字或var关键字来定义常量;IE下,只能使用var关键字来定义常量.解决方法:统一使用var关键字来定义常量.3. event.x与event.y问题说明:IE下,event对象有x,y属性,但是没有pageX,pageY属性;Firefox下,event对象有pageX,pageY属性,但是没有x,y属性.解决方法:使用mX(mX = event.x ? event.x : event.pageX;)来代替IE下的event.x或者Firefox下的event.pageX.4. window.location.href问题说明:IE或者Firefox2.0.x下,可以使用window.location或window.location.href;Firefox1.5.x下,只能使用window.location.解决方法:使用window.location来代替window.location.href.5. frame问题以下面的frame为例:<frame src="xxx.html" id="frameId" name="frameName" />(1)访问frame对象:IE:使用window.frameId或者window.frameName来访问这个frame对象. frameId和frameName可以同名。

浏览器兼容性问题知识整理更新

浏览器兼容性问题知识整理更新

DOM获取焦点
1、关亍focus
网页中迚行一系列操作,都需要使某个元素处亍“激活”状态,类似亍锚点。 通常,表单元素、锚点元素都支持focus。 。
遇到div,p怎么办?
2、focus不tabIndex(可设置戒返回按钮的 tab 键控制次序)
目前,w3c规定,支持tabIndex的有:A, AREA, BUTTON, INPUT,OBJECT, SELECT, and TEXTAREA. 。
function myFun(){ console.log(arguments.callee.caller.toString()) var ets = window.event || arguments.callee.caller.arguments[0]; var et = ets.srcElement || ets.target; }
maxlength: 'maxLength',
cellspacing: 'cellSpacing', rowspan: 'rowSpan',
colspan: 'colSpan',
tabindex: 'tabIndex', usemap: 'useMap', frameborder: 'frameBorder' };
2、setAttribute()的差异
div.setAttribute(“onclick”, “javascript:alert(‘This is a test!’)”); //6,7
div.onclick = function(){ alert(‘sss’)}
IE并丌是丌支持setAttribute这个函数,而是丌支持用setAttribute设置某些属性

前端开发常见的跨浏览器兼容性问题

前端开发常见的跨浏览器兼容性问题

前端开发常见的跨浏览器兼容性问题在日常的前端开发工作中,经常会遇到跨浏览器兼容性问题。

不同的浏览器对网页的解析和渲染方式存在差异,因此相同的代码在不同的浏览器上可能会呈现出不同的效果或产生错误。

了解并解决这些兼容性问题是前端开发中必不可少的技能。

在本文中,我将介绍一些前端开发中常见的跨浏览器兼容性问题及其解决方案。

一、CSS兼容性问题1. 盒模型的差异不同的浏览器对盒模型的解析方式存在差异,导致相同的元素在不同浏览器上呈现不同的布局。

解决方法是使用CSS的`box-sizing`属性,并统一设置为`border-box`,使得所有浏览器都使用相同的盒模型解析方式。

2. 居中对齐在某些浏览器中,实现居中对齐的方式会有差异。

对于水平居中,可以使用`text-align: center`将文本居中对齐,对于垂直居中,可以使用`display: flex`和`align-items: center`将元素垂直居中。

3. 清除浮动清除浮动是一个常见的兼容性问题,不同浏览器对于浮动元素的处理方式不同。

为了避免浮动元素对其他元素的影响,可以使用`clear: both`来清除浮动。

二、JavaScript兼容性问题1. DOM操作不同浏览器对DOM操作的支持存在差异,导致同样的DOM代码在不同浏览器中运行可能会产生错误。

可以使用库如jQuery,它封装了一致的DOM操作接口,避免了浏览器兼容性问题。

2. 事件处理在不同浏览器中,事件处理方法的绑定方式存在差异。

可以使用事件委托的方式来绑定事件,将事件绑定到父元素上,再通过事件冒泡来处理子元素的事件。

3. Ajax请求在不同浏览器中,原生Ajax对象的创建方式存在差异。

可以使用库如axios或jQuery的`$.ajax`方法来封装Ajax请求,统一解决浏览器兼容性问题。

三、HTML兼容性问题1. 标签语义化不同浏览器对于不同标签的解析和渲染方式存在差异,导致网页的布局发生变化。

浏览器兼容性问题

浏览器兼容性问题

常见浏览器兼容性问题与解决方案阅读:232次时间:2010-08-10 09:06:02 字体:[大中小]所谓的浏览器兼容性问题,是指因为不同的浏览器对同一段代码有不同的解析,造成页面显示效果不统一的情况。

在大多数情况下,我们的需求是,无论用户用什么浏览器来查看我们的网站或者登陆我们的系统,都应该是统一的显示效果。

所以浏览器的兼容性问题是前端开发人员经常会碰到和必须要解决的问题。

51CTO推荐阅读:完全免费跨浏览器兼容测试8大利器在学习浏览器兼容性之前,我想把前端开发人员划分为两类:第一类是精确按照设计图开发的前端开发人员,可以说是精确到1px的,他们很容易就会发现设计图的不足,并且在很少的情况下会碰到浏览器的兼容性问题,而这些问题往往都死浏览器的bug,并且他们制作的页面后期易维护,代码重用问题少,可以说是比较牢固放心的代码。

第二类是基本按照设计图来开发的前端开发人员,很多细枝末节差距很大,不如间距,行高,图片位置等等经常会差几px。

某种效果的实现也是反复调试得到,具体为什么出现这种效果还模模糊糊,整体布局十分脆弱。

稍有改动就乱七八糟。

代码为什么这么写还不知所以然。

这类开发人员往往经常为兼容性问题所困。

修改好了这个浏览器又乱了另一个浏览器。

改来改去也毫无头绪。

其实他们碰到的兼容性问题大部分不应该归咎于浏览器,而是他们的技术本身了。

文章主要针对的是第一类,严谨型的开发人员,因此这里主要从浏览器解析差异的角度来分析兼容性问题。

(相关文章推荐:主流浏览器CSS 3和HTML 5兼容清单)浏览器兼容问题一:不同浏览器的标签默认的外补丁和内补丁不同问题症状:随便写几个标签,不加样式控制的情况下,各自的margin 和padding差异较大。

碰到频率:100%解决方案:CSS里*{margin:0;padding:0;}备注:这个是最常见的也是最易解决的一个浏览器兼容性问题,几乎所有的CSS文件开头都会用通配符*来设置各个标签的内外补丁是0。

浏览器兼容性问题总结

浏览器兼容性问题总结

浏览器兼容性问题总结浏览器兼容性题是令我等搞前端人很头疼的题,虽然目前的浏览器对eb标准支持的较好,但是还是有不少的人固守着XP,当然XP上自带的浏览器会令人疯掉。

以前看书摘录的一些兼容性题,今天想起来给找了出来,还是放在博客里不停补充吧,免得哪天找不到这个件。

WindosXP自带浏览器为E6不同的操作系统具有不同的结束符号,基于UNX的系统使用“\n”作为行结束字符,基于Windos的系统使用“\n\r”作为行结束字符,基于inos的系统使用“\r”作为行结束字符。

当需要写入一个本件并想插入一个新行时,需要使用相应操作系统的行结束符号。

在UNX系统中必须使用正斜线“”作为路径分隔符,而在Windos系统中默认使用反斜线“\”作为路径分隔符,在程序中表示时还要将“\”转义,但也接受正斜线“”作为分隔符的写法。

为了程序可以有很好的移植性,建议都使用“”作为件的默认路径分隔符。

另外,也可以使用PHP的内置常量DRECTRY_SEPARATR,其值为当前操作系统的默认件路径分隔符。

时至今日,仍然会提到DWEDWE(音id-inmmy),即Doesn’WorknirosonerneExlorer(它在微软的E中无效)。

针对E(及其他较早浏览器)的缺点,存在一种叫做k的解决方案。

所谓k,就是指以非标准的方式来使用CSS,以达到欺骗特定的浏览器,使其“看到”或忽略某些样式的目的。

创建k 既乏味又耗时,但只要E6普遍存在,k的创建就要持续下去。

E6不支持子选择符(E7能够支持)浏览器可能会跳过某些over伪类不按照下列顺序声明的规则:链接(link)、已(visied)、悬停(over)、激活(ive)。

助记方法:“LoVe-HA”即lovee(爱恨)rge事件属性rge事件属性可返回事节点的目标节点(触发该事件的节点),如生成事件的元素、档或窗口。

语法:evenrgeE浏览器不支持rge属性(E8及之前)。

最全整理浏览器兼容性问题与解决方案

最全整理浏览器兼容性问题与解决方案

常见浏览器兼容性问题与解决方案所谓的浏览器兼容性问题,是指因为不同的浏览器对同一段代码有不同的解析,造成页面显示效果不统一的情况。

在大多数情况下,我们的需求是,无论用户用什么浏览器来查看我们的网站或者登陆我们的系统,都应该是统一的显示效果。

所以浏览器的兼容性问题是前端开发人员经常会碰到和必须要解决的问题。

在学习浏览器兼容性之前,我想把前端开发人员划分为两类:第一类是精确按照设计图开发的前端开发人员,可以说是精确到1px的,他们很容易就会发现设计图的不足,并且在很少的情况下会碰到浏览器的兼容性问题,而这些问题往往都死浏览器的bug,并且他们制作的页面后期易维护,代码重用问题少,可以说是比较牢固放心的代码。

第二类是基本按照设计图来开发的前端开发人员,很多细枝末节差距很大,不如间距,行高,图片位置等等经常会差几px。

某种效果的实现也是反复调试得到,具体为什么出现这种效果还模模糊糊,整体布局十分脆弱。

稍有改动就乱七八糟。

代码为什么这么写还不知所以然。

这类开发人员往往经常为兼容性问题所困。

修改好了这个浏览器又乱了另一个浏览器。

改来改去也毫无头绪。

其实他们碰到的兼容性问题大部分不应该归咎于浏览器,而是他们的技术本身了。

文章主要针对的是第一类,严谨型的开发人员,因此这里主要从浏览器解析差异的角度来分析兼容性问题。

浏览器兼容问题一:不同浏览器的标签默认的外补丁和内补丁不同问题症状:随便写几个标签,不加样式控制的情况下,各自的margin 和padding 差异较大。

碰到频率:100%解决方案:CSS里 *备注:这个是最常见的也是最易解决的一个浏览器兼容性问题,几乎所有的CSS 文件开头都会用通配符*来设置各个标签的内外补丁是0。

浏览器兼容问题二:块属性标签float后,又有横行的margin情况下,在IE6显示margin比设置的大问题症状:常见症状是IE6中后面的一块被顶到下一行碰到频率:90%(稍微复杂点的页面都会碰到,float布局最常见的浏览器兼容问题)解决方案:在float的标签样式控制中加入 display:inline;将其转化为行内属性备注:我们最常用的就是div+CSS布局了,而div就是一个典型的块属性标签,横向布局的时候我们通常都是用div float实现的,横向的间距设置如果用margin 实现,这就是一个必然会碰到的兼容性问题。

浏览器兼容性问题汇总_web前端_html_css

浏览器兼容性问题汇总_web前端_html_css

一、兼容性问题:1、div的垂直居中问题: vertical-align:middle; 将行距增加到和整个DIV一样高 line-height:200px; 然后插入文字,就垂直居中了。

缺点是要控制内容不要换行。

2、margin加倍的问题:设置为float的div在ie下设置的margin会加倍。

这是一个ie6都存在的bug。

解决方案是在这个div里面加上display:inline;例如: <div id=”imfloat”></div> 相应的css为#IamFloat{ float:left; margin:5px;/*IE下理解为10px*/display:inline;/*IE下再理解为5px*/}#box{ float:left; width:100px; margin:0 0 0 100px; //这种情况之下IE会产生200px的距离 display:inline; //使浮动忽略} 这里细说一下block与inline两个元素:block元素的特点是,总是在新行上开始,高度,宽度,行高,边距都可以控制(块元素);inline元素的特点是,和其他元素在同一行上,不可控制(内嵌元素); #box{ display:block; //可以为内嵌元素模拟为块元素display:inline; //实现同一行排列的效果 display:table。

3、IE与宽度和高度的问题: IE 不认得min-这个定义,但实际上它把正常的width和height当作有min的情况来使。

这样问题就大了,如果只用宽度和高度,正常的浏览器里这两个值就不会变,如果只用min-width和min-height的话,IE下面根本等于没有设置宽度和高度。

比如要设置背景图片,这个宽度是比较重要的。

要解决这个问题,可以这样:#box{ width: 80px; height: 35px;} html>body #box{ width: auto;height: auto; min-width: 80px; min-height: 35px;}min -width是个非常方便的CSS命令,它可以指定元素最小也不能小于某个宽度,这样就能保证排版一直正确。

前端开发中常见的浏览器兼容性问题解决

前端开发中常见的浏览器兼容性问题解决

前端开发中常见的浏览器兼容性问题解决在前端开发过程中,浏览器兼容性问题是一个经常遇到的挑战。

不同浏览器对网页的解析方式和支持的技术标准都有所不同,这就导致了同一份代码在不同浏览器上的显示效果差异。

本文将介绍一些前端开发中常见的浏览器兼容性问题,并提供一些解决方案。

1. CSS 相关问题CSS 在不同浏览器上的表现可能存在较大差异。

其中一种常见的问题是盒模型的差异。

IE 盒模型的计算方式与其他浏览器不同,可能导致元素的宽度和高度计算结果不一致。

解决这个问题的办法是使用 CSS 盒模型属性进行统一设置,例如`box-sizing: inherit;`。

除了盒模型问题,还有一些 CSS 属性在不同浏览器上的兼容性不好。

例如,不同浏览器对于`text-overflow` 属性的处理方式可能存在差异。

为了解决这个问题,可以使用 `webkit` 或者 `moz` 前缀来添加特定浏览器的私有属性。

2. JavaScript 相关问题在 JavaScript 开发中,最常见的问题之一就是浏览器对 JavaScript API 的支持程度不同。

一种常见的兼容性问题是跨浏览器的事件处理。

不同浏览器上事件的处理方式和触发机制可能存在差异,因此我们需要编写兼容多个浏览器的事件处理代码。

另一个常见的问题是浏览器对于 ECMAScript5 (ES5) 新特性支持程度不同。

ES5 中引入的一些新方法和对象在一些旧版本的浏览器中并不被支持。

为了解决这个问题,我们可以使用 polyfill 或者库来补充旧版本浏览器缺失的功能。

3. HTML 相关问题HTML 是网页的基础语言,但是不同浏览器对于 HTML 标签的解析和渲染可能存在差异。

常见的一个问题是表单元素的默认样式不同,导致表单在不同浏览器上的显示效果不统一。

解决这个问题的方法是使用CSS 对表单元素进行样式重置,或者使用 UI 框架来统一表单样式。

另一个问题是 HTML5 标签的兼容性。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

常见浏览器兼容性问题汇总常见浏览器兼容性问题汇总1 W3C标准规范1.1 W3C 简介万维网联盟创建于1994年,是Web技术领域最具权威和影响力的国际中立性技术标准机构。

到目前为止,W3C已发布了200多项影响深远的Web技术标准及实施指南,如广为业界采用的超文本标记语言(标准通用标记语言下的一个应用)、可扩展标记语言(标准通用标记语言下的一个子集)以及帮助残障人士有效获得Web 内容的信息无障碍指南(WCAG)等,有效促进了Web技术的互相兼容,对互联网技术的发展和应用起到了基础性和根本性的支撑作用。

1.2 主要工作W3C 最重要的工作是发展Web 规范,这些规范描述了Web 的通信协议(比如HTML 和XHTML)和其他的构建模块 1.3 主要贡献W3C为解决Web 应用中不同平台、技术和开发者带来的不兼容问题,保障Web 信息的顺利和完整流通,万维网联盟制定了一系列标准并督促Web 应用开发者和内容提供者遵循这些标准。

标准的内容包括使用语言的规范,开发中使用的导则和解释引擎的行为等等。

W3C也制定了包括XML和CSS等的众多影响深远的标准规范。

但是,W3C 制定的web 标准似乎并非强制而只是推荐标准。

因此部分网站仍然不能完全实现这些标准。

特别是使用早期所见即所得网页编辑软件设计的网页往往会包含大量非标准代码。

W3C 致力于对web 进行标准化W3C 创建并维护了WWW 标准W3C 标准被称为W3C 推荐标准(W3C Recommendations)W3C 最重要的工作是发展web 规范,也就是描述web 通信协议(比如HTML 和XML)和其他构建模块的“推荐标准”。

1.4 w3cschool及w3c在线验证服务W3CSchool 是因特网上最大的WEB 开发者资源,是完全免费的,是非盈利性的,一直在升级和更新。

由W3C提供的验证服务可以为互联网用户检查HTML 文件是否附合HTML或XHTML标准。

这可以向网页设计师提供快速检查网页错误的方法。

对W3C验证这个事,我们知道W3C是通过规则形式验证的,而我们在写程序的时候往往会有一些难以处理的兼容问题,需要一些不规则的写法来解决,而这样的写法可以解决遇到的问题,但又会通不过验证,在这种时候我们肯定会在解决问题为优先的原则。

2 浏览器介绍 2.1 浏览器概况 2.2 浏览器分析版本介于目前最新版本浏览器例如IE10/11、Safari 7、Firefox 25、Chrome 31已经极大符合W3C标准规范,因此在IE版本中,只做IE6、IE7、IE8分析。

2.3 浏览器内核各品牌浏览器的内核是不同的,不同的内核处理同一段代码的时候思路不同。

因此可以说,浏览器间内核的差异是产生兼容性问题的根本原因。

浏览器名称排版引擎ECMAScript 引擎Internet Explorer Trident ChakraJscript引擎Firefox Gecko SpiderMonkey1.0-3.0 Rhino TraceMonkey3.5-3.6 JaegerMonkey4.0 IonMonkey18 OdinMonkey22 Chrome Webkit早期/Blink28 V8 Safari Webkit SquirrelFish Extreme 2.4 浏览器工作模式及缩写上述浏览器,每种都有两到三种工作模式在这里提到的“模式”是一个与时间点相关联的概念,我们不会因为时间点的不同而更改他们的名称。

也就是说,这个“标准模式”是与浏览器的品牌和版本密切相关的,即便是各浏览器最新版本的“标准模式” 也会有差别。

浏览器的工作模式也被成为“渲染模式”,工作模式的差异不仅表现在处理HTML页面的时候,处理XML及非WEB 内容时也有模式的差异,本文只讨论处理HTML时的工作模式。

为了保证良好的向后兼容性,微软为用户提供了一个“开关”,来决定浏览器的工作模式,就是页面顶部的DTD。

IE6,7,8中的“混杂模式”是为了保证将浏览器的行为冻结在IE5.5版本。

但随着时间推进和进步,2009年IE8重新定义“标准模式”,再次增强对W3C规范的支持,但为了保持对IE7的兼容,还增加了一种“接近标准模式”。

通过以上的内容,我们可以得出结论如果一个页面能使各浏览器都工作在“标准模式”下,那么各浏览器都将尽量兼容标准,因此各浏览器之间表现出的差异是很少的。

相反,如果一个页面使各浏览器都工作在“混杂模式”下,那么各浏览器都将尽量向后兼容,因此各浏览器之间表现出的差异将会最大化。

下图附常见的doctype 在编写一个页面时,要使用可以触发各浏览器“标准模式”的DTD,并书写符合规范的代码,以保证您的页面在各浏览器中可以最大程度的兼容。

3 问题分类(常见)3.1 HTML渲染相关DTD 之前的非空白字符在某些情况下会使该DTD 失效标准参考HTML 4.01 规范中提到,DTD 的前面或后面允许出现空白符,这里提到的“空白符”包括空格符、换行符、制表符和注释。

问题描述如果在DTD 之前加入注释或其他内容,在某些浏览器中该DTD 将无法被识别。

造成影响这个问题将导致同一个页面在有些浏览器中工作在标准模式S 下,在其他浏览器中工作在混杂模式Q 下,从而导致该页面的表现在各浏览器中产生较大差异,如布局混乱、内容重叠、功能无法使用等。

受影响浏览器IE6 DTD 前的任何非空白符都将使浏览器忽略DTD,包括注释和XML 声明。

IE7 IE8 DTD 前的任何非空白符都将使浏览器忽略DTD,包括注释,但不包括XML 声明。

Firefox DTD 前的任何包含“ td1 td2 td3 解决方案设置TABLE 的table-layout 特性值为fixed,或使用固定布局的表格元素可避免此问题。

各浏览器下使用OBJECT元素和EMBED元素嵌入Flash存在差异标准参考OBJECT元素定义了一个嵌入对象,初衷是取代IMG和APPLET元素,但由于安全性等原因及缺乏浏览器支持导致初衷并未实现。

浏览器的对象支持依赖于对象类型。

然而,即便是相同的对象类型,各主流浏览器也都使用了不同的代码来加载。

问题描述通常情况下,IE 系列浏览器通过ActiveX 插件使用OBJECT 元素引入Flash,而其他浏览器则是通过相应的NPAPI 插件使用EMBED 元素。

这造成了各浏览器中插入Flash 的方式的差异造成影响若仅仅使用OBJECT 元素设置了classid 属性引入Flash,则可能造成在某些浏览器中Flash 无法被引入。

而若嵌套的OBJECT 和EMBED 元素参数不统一,也可能造成引入的Flash 在各浏览器中出现差异。

受影响浏览器ALL 问题分析对于HTML4.01 规范中的OBJECT 元素,IE 对classid 属性有自己的解释方式类标识符(class identifier)。

格式形如clsidXXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXX X。

由ActiveX 组件注册在Windows 的系统注册表中。

codebase 属性则为该类标识符所对应的ActiveX 插件的URI 地址。

一般是一个.cab 安装包。

(更多请参考MSDNCLASSID Attribute | classid Property 及Class Identifier 中的内容。

)EMBED 元素则是由NetScape Navigator 2 引入,用于在HTML 文档中插入符合网景插件应用程序编程接口(NPAPI)规范的插件。

NPAPI 插件是跨平台的,并可以在所有实现了此接口规范的浏览器中使用。

目前的主流浏览器中IE 系列以外的浏览器均支持NPAPI 插件。

事实上IE3.0 就支持NPAPI,但是在IE5.5 SP2 后微软出于安全考虑停止了对NPAPI 的支持,转而推荐用户使用其ActiveX 技术作为替代。

(更多请参考MSDNNetscape 式的插件在升级Internet Explorer 后不工作)EMBED 元素拥有一个名为pluginspage 的属性,其值为NPAPI 插件的URL,与IE 中OBJECT 元素的codebase 属性类似,它告诉了浏览器插件的下载地址。

EMBED 元素不属于HTML4.01 规范中的元素,HTML 文档中直接使用EMBED 元素可能无法通过W3C 校验。

不过EMBED 元素目前已经被添加到HTML5 草案中。

(参加HTML5 草案4.8.3 The embed element)至此若需要在HTML 文档中引入一个已安装的通用的插件,如Flash,则在IE 中使用OBJECT 元素,非IE 中则使用EMBED 元素。

此外IE 中也支持EMBED 元素引入设置了正确MIME 的插件。

解决方案1若不考虑W3C 校验,可统一使用EMBED 元素嵌入Flash,这样可以避免因参数不统一导致的兼容性问题。

2若需要考虑W3C 校验,则可使用OBJECT 元素type、data 属性以及PARAM 元素的方式。

3若必须使用OBJECT 嵌套EMBED 元素这种混合方式,则要保证Flash 文件URL、为Flash 传递的参数、宽度、高度、wmode 等参数保持统一。

4可以使用开源的SWFObject 引入Flash。

IE6 IE7 IE8Q 中IMG 元素的alt 属性在没有title 属性的情况下会被当作提示信息使用标准参考W3C HTML 4.01 规范规定,alt 属性指定了在User Agents 不能显示图片、表单和applets 的时候显示的替换文字。

问题描述alt 属性在IE6 IE7 IE8Q 下具有双重意义。

在给IMG、AREA、INPUT[typeimage] 元素设置的alt 属性值不但可以作为该元素的替代文字,在该元素没有指定title 属性时,还可以作为提示信息(tooltip)被显示出来。

造成影响若用户需要显示提示框,并且仅指定了alt 属性,则在IE8S 及其它浏览器中将无法显示提示框;若用户不需要显示提示框,并且指定了alt 属性,则在IE6 IE7 IE8Q 中仍然会显示提示框。

受影响浏览器IE6 7 8Q 问题分析IE6 IE7 IE8Q 对alt 属性的理解有误,这些浏览器混淆了此属性与title 属性。

在没有设置title 属性的情况下,鼠标放在设置了alt 属性的IMG AREA INPUT[typeimage] 元素上时仍会弹出提示框(tooltip)。

解决方案若用户需要显示提示框,则指定title 属性;若用户不需要显示提示框,则指定title““。

IE6 不支持PNG24 格式图片的半透明效果标准参考无问题描述PNG24 格式图片可以携带Alpha 半透明通道,以便呈现从透明到不透明间过渡色彩效果,但是IE6 不支持这种格式原有的透明特性。

相关文档
最新文档