JavaScript在IE和Firefox浏览器下的7个差异兼容写法小结


Posted in Javascript onJune 18, 2010

在这篇文章中,作者介绍了7个JavaScript在IE和Firefox中存在的差异。
1. CSS “float” 值
访问一个给定CSS 值的最基本句法是:object.style.property,使用驼峰写法来替换有连接符的值,例如,访问某个ID为”header”的<div>的 background-color值,我们使用如下句法:

document.getElementById("header").style.backgroundColor= "#ccc";
但由于”float“这个词是一个JavaScript保留字,因此我们不能用 object.style.float来访问,这里,我们可以在两种浏览器中这么做:
在IE中这样写:

document.getElementById("header").style.styleFloat = "left";
在Firefox中这样写:

document.getElementById("header").style.cssFloat = "left";

2. 元素的推算样式
JavaScript可以使用object.style.property句法,方便地在外部访问和修改某个CSS样式,但其限制是这些句法只能取出已设的行内样式或者直接由JavaScript设定的样式。并不能访问某个外部的样式表。为了访问元素的”推算”样式,我们可以使用下面的代码:
在IE中这样写:

var myObject = document.getElementById("header");
var myStyle = myObject.currentStyle.backgroundColor;
在Firefox中这样写:

var myObject = document.getElementById("header");
var myComputedStyle = document.defaultView.getComputedStyle(myObject, null);
var myStyle = myComputedStyle.backgroundColor;
3. 访问元素的”class”
像”float“一样,”class“是JavaScript的一个保留字,在这两个浏览器中我们使用如下句法来访问”class”。
在IE中这样写:

var myObject = document.getElementById("header");
var myAttribute = myObject.getAttribute("className");
在Firefox中这样写:

var myObject = document.getElementById("header");
var myAttribute = myObject.getAttribute("class");
This syntax would also apply using the setAttribute method.

4. 访问<label>标签中的”for”
就第3点中所提到的,我们同样需要使用不现的句法区分来访问<label>标签中的”for“:
在IE中这样写:

var myObject = document.getElementById("myLabel");
var myAttribute = myObject.getAttribute("htmlFor");
在Firefox中这样写:

var = document.getElementById("myLabel");
var myAttribute = myObject.getAttribute("for");
5. 获取鼠标指针的位置
计算出鼠标指针的位置对你来说可能是非常少见的,不过当你需要的时候,在IE和Firefox中的句法是不同的。这里所写出的代码将是最最基本的,也可能是某个复杂事件处理中的某一个部分。但他们可以解释其中的异同点。同时,必须指出的是结果相对于Firefox,IE会有更在的不同,这种方法本身就是有BUG的。通常,这种不同可以用”拖动位置”来得到补偿,但,那是另外一个主题的文章了: ) !
在IE中这样写:

var myCursorPosition = [0, 0];
myCursorPosition[0] = event.clientX;
myCursorPosition[1] = event.clientY;
在Firefox中这样写:

var myCursorPosition = [0, 0];
myCursorPosition[0] = event.pageX;
myCursorPosition[1] = event.pageY;
6. 获取可见区域、窗口的大小
有时,我们会需要找到浏览器的可视位置的大小,通常我们称之为”可见区域”。
在IE中这样写:

var myBrowserSize = [0, 0];
myBrowserSize[0] = document.documentElement.clientWidth;
myBrowserSize[1] = document.documentElement.clientHeight;
在Firefox中这样写:

var myBrowserSize = [0, 0];
myBrowserSize[0] = window.innerWidth;
myBrowserSize[1] = window.innerHeight;
7. Alpha 透明
好吧,这并不是一个JavaScript句法问题,而是源自于CSS的Alpha透明。但当某个物体需要淡入/出则需要JavaScript来表现,这是通过访问CSS的Alpha透明设置来完成的,通常在一个循环中完成。你需要通过来修改的JavaScript的代码如下:
在IE中这样写:

#myElement { filter: alpha(opacity=50); }
在Firefox中这样写:

#myElement { opacity: 0.5; }
在IE中这样写:

var myObject = document.getElementById("myElement");
myObject.style.filter = "alpha(opacity=80)";
在Firefox中这样写:

var myObject = document.getElementById("myElement"); myObject.style.opacity = "0.5";
还有什么不同的吗?
这是作者(via: 7 JavaScript Differences Between Firefox & IE)个人根据自己的经验整理的,而sofish在JavaScript上依然是一个新手。如果还有更多的不同,欢迎大家提出来,分享出来,共同学习!

Javascript 相关文章推荐
JS location几个方法小姐
Jul 09 Javascript
jQuery弹出层插件简化版代码下载
Oct 16 Javascript
浅谈javascript的原型继承
Jul 25 Javascript
jQuery+.net实现浏览更多内容(改编php版本)
Mar 28 Javascript
jquery实现图片翻页效果
Dec 23 Javascript
提取jquery的ready()方法单独使用示例
Mar 25 Javascript
JavaScript中的alert()函数使用技巧详解
Dec 29 Javascript
Bootstrap表单布局样式源代码
Jul 04 Javascript
深入浅析JavaScript中的Function类型
Jul 09 Javascript
原生js实现倒计时功能(多种格式调用)
Jan 12 Javascript
echarts实现地图定时切换散点与多图表级联联动详解
Aug 07 Javascript
使用Canvas绘制一个游戏人物属性图
Mar 25 Javascript
Javascript下IE与Firefox下的差异兼容写法总结
Jun 18 #Javascript
js打印纸函数代码(递归)
Jun 18 #Javascript
jquery 弹出层注册页面等(asp.net后台)
Jun 17 #Javascript
jquery 多行滚动代码(附详细解释)
Jun 17 #Javascript
关于juqery radio写法的兼容性问题(新老版本jquery)
Jun 14 #Javascript
jQuery+jqmodal弹出窗口实现代码分明
Jun 14 #Javascript
ExtJS 设置级联菜单的默认值
Jun 13 #Javascript
You might like
深入php中var_dump方法的使用详解
2013/06/24 PHP
解析数组非数字键名引号的必要性
2013/08/09 PHP
PHP递归遍历多维数组实现无限分类的方法
2016/05/06 PHP
php微信开发接入
2016/08/27 PHP
Laravel框架实现简单的学生信息管理平台案例
2019/05/07 PHP
top.location.href 没有权限 解决方法
2008/08/05 Javascript
始终在屏幕中间显示Div的代码(css+js)
2011/03/10 Javascript
js常用代码段收集
2011/10/28 Javascript
javascript工具库代码
2012/03/29 Javascript
jquery点击页面任何区域实现鼠标焦点十字效果
2013/06/21 Javascript
js倒计时小程序
2013/11/05 Javascript
判断javascript的数据类型(示例代码)
2013/12/11 Javascript
JavaScript判断数组是否包含指定元素的方法
2015/07/01 Javascript
jQuery实现放大镜效果实例代码
2016/03/17 Javascript
易被忽视的js事件问题总结
2016/05/14 Javascript
聊聊JavaScript如何实现继承及特点
2017/04/07 Javascript
jQuery实现div跟随鼠标移动
2020/08/20 jQuery
JavaScript用二分法查找数据的实例代码
2017/06/17 Javascript
Bootstrap框架建立树形菜单(Tree)的实例代码
2017/10/30 Javascript
Vue.js进阶知识点总结
2018/04/01 Javascript
vue-cli 首屏加载优化问题
2018/11/06 Javascript
微信小程序 动态修改页面数据及参数传递过程详解
2019/09/27 Javascript
[44:37]完美世界DOTA2联赛PWL S3 Forest vs access 第一场 12.11
2020/12/13 DOTA
pygame游戏之旅 创建游戏窗口界面
2018/11/20 Python
Python插入Elasticsearch操作方法解析
2020/01/19 Python
Python创建临时文件和文件夹
2020/08/05 Python
matplotlib 三维图表绘制方法简介
2020/09/20 Python
Python3读写ini配置文件的示例
2020/11/06 Python
python如何发送带有附件、正文为HTML的邮件
2021/02/27 Python
印度最大的酒店品牌网络:OYO Rooms
2016/07/24 全球购物
中国领先的专业家电网购平台:国美在线
2016/12/25 全球购物
Volcom法国官网:美国冲浪滑板品牌
2017/05/25 全球购物
俄罗斯电子产品在线商店:UltraTrade
2020/01/30 全球购物
护士自我介绍信
2014/01/13 职场文书
2015年小学语文教师工作总结
2015/10/23 职场文书
学校2016年圣诞节活动总结
2016/03/31 职场文书