`
dingchao.lonton
  • 浏览: 48669 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

javascript和css兼容汇总

阅读更多

javascript 部分

 

1. document.form.item 问题
问题:
代码中存在 document.formName.item(“itemName”) 这样的语句,不能在FF下运行
解决方法:
改用 document.formName.elements["elementName"]


2. 集合类对象问题
问题:
代码中许多集合类对象取用时使用(),IE能接受,FF不能
解决方法:
改用 [] 作为下标运算,例:
document.getElementsByName(“inputName”)(1) 改为 document.getElementsByName(“inputName”)[1]


3. window.event
问题:
使用 window.event 无法在FF上运行
解决方法:
FF的 event 只能在事件发生的现场使用,此问题暂无法解决。可以把 event 传到函数里变通解决:
onMouseMove = “functionName(event)”
function functionName (e) {
e = e || window.event;
……
}


4. HTML对象的 id 作为对象名的问题
问题:
在IE中,HTML对象的 ID 可以作为 document 的下属对象变量名直接使用,在FF中不能
解决方法:
使用对象变量时全部用标准的 getElementById(“idName”)


5. 用 idName 字符串取得对象的问题
问题:
在IE中,利用 eval(“idName”) 可以取得 id 为 idName 的HTML对象,在FF中不能
解决方法:
用 getElementById(“idName”) 代替 eval(“idName”)


6. 变量名与某HTML对象 id 相同的问题
问题:
在FF中,因为对象 id 不作为HTML对象的名称,所以可以使用与HTML对象 id 相同的变量名,IE中不能
解决方法:
在声明变量时,一律加上 var ,以避免歧义,这样在IE中亦可正常运行
最好不要取与HTML对象 id 相同的变量名,以减少错误


7. event.x 与 event.y 问题
问题:
在IE中,event 对象有x,y属性,FF中没有
解决方法:
在FF中,与 event.x 等效的是 event.pageX ,但event.pageX IE中没有
故采用 event.clientX 代替 event.x ,在IE中也有这个变量
event.clientX 与 event.pageX 有微妙的差别,就是滚动条
要完全一样,可以这样:
mX = event.x ? event.x : event.pageX;
然后用 mX 代替 event.x


8. 关于frame
问题:
在IE中可以用 window.testFrame 取得该frame,FF中不行
解决方法:
window.top.document.getElementById(“testFrame”).src = ‘xx.htm’
window.top.frameName.location = ‘xx.htm’


9. 取得元素的属性
在FF中,自己定义的属性必须 getAttribute() 取得


10. 在FF中没有 parentElement,parement.children 而用 parentNode,parentNode.childNodes
问题:
childNodes 的下标的含义在IE和FF中不同,FF的 childNodes 中会插入空白文本节点
解决方法:
可以通过 node.getElementsByTagName() 来回避这个问题
问题:
当html中节点缺失时,IE和FF对 parentNode 的解释不同,例如:
<form>
<table>
<input/>
</table>
</form>
FF中 input.parentNode 的值为form,而IE中 input.parentNode 的值为空节点
问题:
FF中节点自己没有 removeNode 方法
解决方法:
必须使用如下方法 node.parentNode.removeChild(node)


11. const 问题
问题:
在IE中不能使用 const 关键字
解决方法:
以 var 代替


12. body 对象
FF的 body 在 body 标签没有被浏览器完全读入之前就存在,而IE则必须在 body 完全被读入之后才存在
这会产生在IE下,文档没有载入完时,在body上appendChild会出现空白页面的问题
解决方法:
一切在body上插入节点的动作,全部在onload后进行


13. url encoding
问题:
一般FF无法识别js中的&
解决方法:
在js中如果书写url就直接写&不要写&


14. nodeName 和 tagName 问题
问题:
在FF中,所有节点均有 nodeName 值,但 textNode 没有 tagName 值,在IE中,nodeName 的使用有问题
解决方法:
使用 tagName,但应检测其是否为空


15. 元素属性
IE下 input.type 属性为只读,但是FF下可以修改


16. document.getElementsByName() 和 document.all[name] 的问题
问题:
在IE中,getElementsByName()、document.all[name] 均不能用来取得 div 元素
是否还有其它不能取的元素还不知道(这个问题还有争议,还在研究中)


17. 调用子框架或者其它框架中的元素的问题
框架问题繁体字网的前段设计师曾做过详细的讲解,简单来说,在IE中,可以用如下方法来取得子元素中的值
document.getElementById(“frameName”).(document.)elementName
window.frames["frameName"].elementName
在FF中则需要改成如下形式来执行,与IE兼容:
window.frames["frameName"].contentWindow.document.elementName
window.frames["frameName"].document.elementName


18. 对象宽高赋值问题
问题:
FireFox中类似 obj.style.height = imgObj.height 的语句无效
解决方法:
统一使用 obj.style.height = imgObj.height + “px”;


19. innerText的问题
问题:
innerText 在IE中能正常工作,但是 innerText 在FireFox中却不行
解决方法:
在非IE浏览器中使用textContent代替innerText


20. event.srcElement和event.toElement问题
问题:
IE下,even对象有srcElement属性,但是没有target属性;Firefox下,even对象有target属性,但是没有srcElement属性
解决方法:
var source = e.target || e.srcElement;
var target = e.relatedTarget || e.toElement;


21. 禁止选取网页内容
问题:
FF需要用CSS禁止,IE用JS禁止
解决方法:
IE: obj.onselectstart = function() {return false;}
FF: -moz-user-select:none;


22. 捕获事件
问题:
FF没有setCapture()、releaseCapture()方法
解决方法:
IE:
obj.setCapture();
obj.releaseCapture();
FF:
window.captureEvents(Event.MOUSEMOVE|Event.MOUSEUP);
window.releaseEvents(Event.MOUSEMOVE|Event.MOUSEUP);
if (!window.captureEvents) {
o.setCapture();
}else {
window.captureEvents(Event.MOUSEMOVE|Event.MOUSEUP);
}
if (!window.captureEvents) {
o.releaseCapture();
}else {
window.releaseEvents(Event.MOUSEMOVE|Event.MOUSEUP);
}


CSS部分

 

  • div类

1. 居中问题
div里的内容,IE默认为居中,而FF默认为左对齐
可以尝试增加代码margin:auto


2. 高度问题
两上下排列或嵌套的div,上面的div设置高度(height),如果div里的实际内容大于所设高度,在FF中会出现两个div重叠的现象;但在IE中,下面的div会自动给上面的div让出空间
所以为避免出现层的重叠,高度一定要控制恰当,或者干脆不写高度,让他自动调节,比较好的方法是 height:100%;
但当这个div里面一级的元素都float了的时候,则需要在div块的最后,闭和前加一个沉底的空div,对应CSS是:
.float_bottom {clear:both;height:0px;font-size:0px;padding:0;margin:0;border:0;line-height:0px;overflow:hidden;}


3. clear:both;
不想受到float浮动的,就在div中写入clear:both;


4. IE浮动 margin 产生的双倍距离
#box {
float:left;
width:100px;
margin:0 0 0 100px; //这种情况之下IE会产生200px的距离
display:inline; //使浮动忽略
}


5. padding 问题
FF设置 padding 后,div会增加 height 和 width,但IE不会 (* 标准的 XHTML1.0 定义 dtd 好像一致了)
高度控制恰当,或尝试使用 height:100%;
宽度减少使用 padding
但根据实际经验,一般FF和IE的 padding 不会有太大区别,div 的实际宽 = width + padding ,所以div写全 width 和 padding,width 用实际想要的宽减去 padding 定义


6. div嵌套时 y 轴上 padding 和 marign 的问题
FF里 y 轴上 子div 到 父div 的距离为 父padding + 子marign
IE里 y 轴上 子div 到 父div 的距离为 父padding 和 子marign 里大的一个
FF里 y 轴上 父padding=0 且 border=0 时,子div 到 父div 的距离为0,子marign 作用到 父div 外面


7. padding,marign,height,width 的傻瓜式解决技巧
注意是技巧,不是方法:
写好标准头
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>
<html xmlns=”http://www.w3.org/1999/xhtml”>
高尽量用padding,慎用margin,height尽量补上100%,父级height有定值子级height不用100%,子级全为浮动时底部补个空clear:both的div
宽尽量用margin,慎用padding,width算准实际要的减去padding

  • 列表类

1. ul 标签在FF中默认是有 padding 值的,而在IE中只有margin有值
先定义 ul {margin:0;padding:0;}


2. ul和ol列表缩进问题
消除ul、ol等列表的缩进时,样式应写成: {list-style:none;margin:0px;padding:0px;}

  • 显示类

1. display:block,inline 两个元素
display:block; //可以为内嵌元素模拟为块元素
display:inline; //实现同一行排列的的效果
display:table; //for FF,模拟table的效果
display:block 块元素,元素的特点是:
总是在新行上开始;
高度,行高以及顶和底边距都可控制;
宽度缺省是它的容器的100%,除非设定一个宽度
<div>,<p>,<h1>,<form>,<ul> 和 <li> 是块元素的例子
display:inline 就是将元素显示为行内元素,元素的特点是:
和其他元素都在一行上;
高,行高及顶和底边距不可改变;
宽度就是它的文字或图片的宽度,不可改变。
<span>,<a>,<label>,<input>,<img>,<strong> 和 <em> 是 inline 元素的例子


2. 鼠标手指状显示
全部用标准的写法 cursor: pointer;

  • 背景、图片类

1. background 显示问题
全部注意补齐 width,height 属性


2. 背景透明问题
IE: filter: progid: DXImageTransform.Microsoft.Alpha(style=0,opacity=60);
IE: filter: alpha(opacity=10);
FF: opacity:0.6;
FF: -moz-opacity:0.10;
最好两个都写,并将opacity属性放在下面

分享到:
评论

相关推荐

    JavaScript详解(第2版)

     14.2.1 什么是兼容CSS的浏览器   14.2.2 样式表的工作原理   14.3 CSS程序结构   14.3.1 注释   14.3.2 组合   14.4 常用样式表属性   14.4.1 计量单位   14.4.2 使用颜色   14.4.3 使用...

    IE6与CSS样式兼容问题汇总

    1、PNG半透明图片的问题 ...造成这个的原因是由于IE6没有将背景图缓存,每次触发hover的时候都会重新加载,可以用JavaScript设置IE6缓存这些图片下面是代码: 复制代码代码如下:document.execCommand(“BackgroundIm

    编程狂人第九期(2014-1-20)

    Javascript和CSS浏览器兼容总结 盘点2013:最优秀的HTML5&CSS3设计 浏览器中关于事件的那点事儿 了解Json 和XML 常用CSS优化总结——网络性能与语法性能建议 编程语言 2013流行Python项目汇总 15款Django开发常用...

    前端开发常见问题汇总概要总结.docx

    布局与样式兼容性:不同浏览器对CSS标准支持程度各异,导致布局差异,需要处理盒模型、float、positioning、flexbox、grid等方面的兼容问题。 响应式设计:移动设备适配、屏幕分辨率变化下的布局调整和图像自适应等...

    前端最全汇总面试题及答案.docx

    HTML&CSS: 对Web标准的理解、浏览器内核差异、兼容性、hack、CSS基本功:布局、盒子模型、选择器优先级及使用、HTML5、CSS3、移动端适应。 JavaScript: 数据类型、面向对象、继承、闭包、插件、作用域、跨域、...

    JavaScript常用脚本汇总(一)

    jquery限制文本框只能输入数字,兼容IE、chrome、FF(表现效果不一样),示例代码如下: 代码如下: $(“input”).keyup(function(){ //keyup事件处理  $(this).val($(this).val().replace(/\D|^0/g,”)); }).bind(...

    浏览器兼容性问题大汇总

    JavaScript 1.HTML对象获取问题 FireFox:document.getElementById(“idName”); ie:document.idname或者document.getElementById(“idName”). 解决办法:统一使用document.getElementById(“idName”); 2....

    JavaScript之创意时钟项目(实例讲解)

    jQuery、原生javascript、css3、h5 四、重难点解释 1.各个指针的旋转角度的获取 首先要明确如下概念: 时钟指针旋转一周360度 时针: 表盘上共有12小时,每经过一小时,要旋转30度; 分针: 表盘上共有60个小格子,...

    亚信java笔试题-Front-knowledge:前端知识汇总

    CSS 7. Angularjs 8. React 9. 移动端API 1. API 2. 框架 10. avalon 11. Requriejs 12. Seajs 13. Less,sass 14. Markdown 15. D3 16. 兼容性 17. UI相关 18. HTTP 19. 其它API 20. 图表类 21. vue 21. 正则 22. ...

    learn-notes:学习笔记

    移动端汇总 前端性能 前端安全 css vue-style BFC display none visibility hidden opacity 0区别 JS this-理解 Web Worker JS 垃圾回收机制简单概述 js azure storage blob 上传 vue vue-页面之间传多个参数 微信...

    vue2-perfect-scrollbar:Vue.js包装器提供完美的滚动条

    也是因为此插件是通过汇总进行更新,测试和构建的。 这样您就不会发现任何不必要的东西 :pile_of_poo: 此仓库中的代码。 我希望 :folded_hands: 。 如果您有合理的公关资格,欢迎您 :sign_of_the_horns: 安装 npm ...

    MF00492-ASP.NET企业人力资源管理.zip

    开发者不需要编写复杂的javascript,也不需要对css样式有深入的了解,开发者需要了解的只有一些简单的html标签。) 2、Lodop打印控件 目前流行的WEB控件,即可裁剪输出网页内容,也可用JS语句直接打印: 1)用CSS+...

    ASP.NET4高级程序设计第4版 带目录PDF 分卷压缩包 part1

    16.4.4 具有表格和CSS布局的母版页 16.4.5 母版页和相对路径 16.4.6 通过配置文件应用母版页 16.5 高级母版页 16.5.1 和母版页类交互 16.5.2 动态设置母版页 16.5.3 嵌套母版页 16.6 总结 第17章 ...

    asp.net知识库

    采用XHTML和CSS设计可重用可换肤的WEB站点 asp.net的网址重定向方法的比较:面向搜索引擎友好 也谈 ASP.NET 1.1 中 QueryString 的安全获取写法 ASP.NET运行模式:PageHandlerFactory 利用搜索引擎引用来高亮页面...

    ASP.NET4高级程序设计(第4版) 3/3

    内容简介  《ASP.NET 4高级程序设计(第4版)》是ASP.NET领域的鸿篇巨制,全面讲解了ASP.NET...16.4.4 具有表格和CSS布局的母版页 556 16.4.5 母版页和相对路径 559 16.4.6 通过配置文件应用母版页 559 16.5 高级...

    revolving-door:Web播放器,用于Binary Revolution Stream文件

    浏览器兼容性该程序已经在所有现代浏览器(Chrome,Firefox,Safari)中进行了测试,并且还可以在某些较旧的浏览器(如Palemoon 28和Icecat 60)上运行。 该程序尝试将其功能调整为浏览器所需的功能(例如,禁用或...

Global site tag (gtag.js) - Google Analytics