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 相关文章推荐
jQuery控制图片的hover效果(smartRollover.js)
Mar 18 Javascript
模拟jQuery中的ready方法及实现按需加载css,js实例代码
Sep 27 Javascript
jquery分页插件jpaginate在IE中不兼容问题
Apr 22 Javascript
jquery验证邮箱格式是否正确实例讲解
Nov 16 Javascript
JavaScript中解决多浏览器兼容性23个问题的快速解决方法
May 19 Javascript
js中通过getElementsByName访问name集合对象的方法
Oct 31 Javascript
js实现hashtable的赋值、取值、遍历操作实例详解
Dec 25 Javascript
vue.js声明式渲染和条件与循环基础知识
Jul 31 Javascript
jQuery实现动态添加节点与遍历节点功能示例
Nov 09 jQuery
使用Angular CLI快速创建Angular项目的一些基本概念和写法小结
Apr 22 Javascript
微信小程序自定义导航栏(模板化)
Nov 15 Javascript
vue自定义组件实现双向绑定
Jan 13 Vue.js
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
多文件上传的例子
2006/10/09 PHP
浅析PHP水印技术
2007/02/14 PHP
探讨Hessian在PHP中的使用分析
2013/06/13 PHP
php对数组排序代码分享
2014/02/24 PHP
mantis安装、配置和使用中的问题小结
2014/07/14 PHP
ThinkPHP的SAE开发相关注意事项详解
2016/10/09 PHP
一些易混淆且不常用的属性,希望有用
2007/01/29 Javascript
ExtJs 3.1 XmlTreeLoader Example Error
2010/02/09 Javascript
javascript下4个跨浏览器必备的函数
2010/03/07 Javascript
Javascript和HTML5利用canvas构建Web五子棋游戏实现算法
2013/07/17 Javascript
用Javascript获取页面元素的具体位置
2013/12/09 Javascript
JavaScript判断一个字符串是否包含指定子字符串的方法
2015/03/18 Javascript
javascript中不易分清的slice,splice和split三个函数
2016/03/29 Javascript
AngularJS表单详解及示例代码
2016/08/17 Javascript
JS 实现可停顿的垂直滚动实例代码
2016/11/23 Javascript
原生js实现可拖拽效果
2017/02/28 Javascript
JS实现多选框的操作
2020/06/24 Javascript
星球大战与Python之间的那些事
2016/01/07 Python
使用Nginx+uWsgi实现Python的Django框架站点动静分离
2016/03/21 Python
python如何删除文件中重复的字段
2019/07/16 Python
tensorflow 限制显存大小的实现
2020/02/03 Python
浅谈Python中的异常和JSON读写数据的实现
2020/02/27 Python
Selenium+BeautifulSoup+json获取Script标签内的json数据
2020/12/07 Python
阳光体育:Sunny Sports(购买露营和远足设备)
2018/08/07 全球购物
英国领先的豪华时尚家居网上商店:Amara
2019/08/12 全球购物
Trench London官方网站:高级风衣和意大利皮夹克
2020/07/11 全球购物
工程资料员岗位职责
2014/03/10 职场文书
勾股定理课后反思
2014/04/26 职场文书
计算机应用专业毕业生求职信
2014/06/03 职场文书
销售经理工作检讨书
2015/02/19 职场文书
600字作文之感受大自然
2019/11/27 职场文书
python基础之while循环语句的使用
2021/04/20 Python
Python实现生成bmp图像的方法
2021/06/13 Python
Python爬虫基础之简单说一下scrapy的框架结构
2021/06/26 Python
用Python实现屏幕截图详解
2022/01/22 Python
zabbix如何添加监控主机和自定义监控项
2022/08/14 Servers