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播放wav文件(源码)
Apr 22 Javascript
jQuery中slice()方法用法实例
Jan 07 Javascript
在JavaScript中使用对数Math.log()方法的教程
Jun 15 Javascript
js正则表达式验证邮件地址
Nov 12 Javascript
使用jquery.form.js实现图片上传的方法
May 05 Javascript
js中通过getElementsByName访问name集合对象的方法
Oct 31 Javascript
ES6 javascript中class类的get与set用法实例分析
Oct 30 Javascript
vue-cli2.x项目优化之引入本地静态库文件的方法
Jun 19 Javascript
vue-router中scrollBehavior的巧妙用法
Jul 09 Javascript
详解多页应用 Webpack4 配置优化与踩坑记录
Oct 16 Javascript
Vue Prop属性功能与用法实例详解
Feb 23 Javascript
Javascript 类型转换、封闭函数及常见内置对象操作示例
Nov 15 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
Mysql中分页查询的两个解决方法比较
2013/05/02 PHP
PHP链接MySQL的常用扩展函数
2014/10/23 PHP
PHP命令空间namespace及use的用法小结
2017/11/27 PHP
javaScript 判断字符串是否为数字的简单方法
2009/07/25 Javascript
JavaScript 解析Json字符串的性能比较分析代码
2009/12/16 Javascript
为Extjs加加速(javascript加速)
2010/08/19 Javascript
javascript中的数字与字符串相加实例分析
2011/08/14 Javascript
jquery如何根据值设置默认的选中项
2014/03/17 Javascript
浅谈javascript中字符串String与数组Array
2014/12/31 Javascript
JS使用onerror捕获异常示例
2016/08/03 Javascript
Vue.js动态组件解析
2016/09/09 Javascript
VUE 更好的 ajax 上传处理 axios.js实现代码
2017/05/10 Javascript
微信小程序实现折叠展开效果
2018/07/19 Javascript
jQuery实现的简单歌词滚动功能示例
2019/01/07 jQuery
jQuery使用$.extend(true,object1, object2);实现深拷贝对象的方法分析
2019/03/06 jQuery
JS阻止事件冒泡的方法详解
2019/08/26 Javascript
vue+Element中table表格实现可编辑(select下拉框)
2020/05/21 Javascript
js实现随机圆与矩形功能
2020/10/29 Javascript
[09:47]2018DOTA2亚洲邀请赛4.5SOLO赛 No[o]ne vs Sumail
2018/04/06 DOTA
Python创建模块及模块导入的方法
2015/05/27 Python
利用Python暴力破解zip文件口令的方法详解
2017/12/21 Python
解决python3 urllib 链接中有中文的问题
2018/07/16 Python
Python在图片中插入大量文字并且自动换行
2019/01/02 Python
详解python中@的用法
2019/03/27 Python
python各层级目录下import方法代码实例
2020/01/20 Python
python3 字符串知识点学习笔记
2020/02/08 Python
Django返回HTML文件的实现方法
2020/09/17 Python
Farfetch阿联酋:奢侈品牌时尚购物平台
2019/07/26 全球购物
SOA的常见陷阱或者误解是什么
2014/10/05 面试题
四风问题个人自查剖析材料思想汇报
2014/09/21 职场文书
2014年车间主任工作总结
2014/12/10 职场文书
2015学校六五普法工作总结
2015/04/22 职场文书
关于感恩的歌曲整理(8首)
2019/08/14 职场文书
python numpy中setdiff1d的用法说明
2021/04/22 Python
利用python进行数据加载
2021/06/20 Python
SQLyog的下载、安装、破解、配置教程(MySQL可视化工具安装)
2022/09/23 MySQL