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 相关文章推荐
ExtJS 2.0实用简明教程之应用ExtJS
Apr 29 Javascript
类似CSDN图片切换效果脚本
Sep 17 Javascript
jQuery 使用手册(三)
Sep 23 Javascript
javascript的回调函数应用示例
Feb 20 Javascript
input标签内容改变的触发事件介绍
Jun 18 Javascript
JavaScript中setUTCMilliseconds()方法的使用详解
Jun 12 Javascript
javascript self对象使用详解
Oct 18 Javascript
详解js产生对象的3种基本方式(工厂模式,构造函数模式,原型模式)
Jan 09 Javascript
React.js中常用的ES6写法总结(推荐)
May 09 Javascript
Vue.js实现网格列表布局转换方法
Aug 25 Javascript
JS+Canvas绘制动态时钟效果
Nov 10 Javascript
JS学习笔记之贪吃蛇小游戏demo实例详解
May 29 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&amp;MYSQL服务器配置说明
2006/10/09 PHP
PHP面向对象的使用教程 简单数据库连接
2006/11/25 PHP
PHP中使用gettext来支持多语言的方法
2011/05/02 PHP
PHP截取指定图片大小的方法
2014/12/10 PHP
Codeigniter的一些优秀特性总结
2015/01/21 PHP
PHP基于openssl实现的非对称加密操作示例
2019/01/11 PHP
Laravel6.18.19如何优雅的切换发件账户
2020/06/14 PHP
javascript对象之内置对象Math使用方法
2010/04/16 Javascript
Jquery幻灯片特效代码分享--打开页面随机选择切换方式(3)
2015/08/15 Javascript
jQuery实现的仿select功能代码
2015/08/19 Javascript
AngularJS中$injector、$rootScope和$scope的概念和关联关系深入分析
2017/01/19 Javascript
浅谈webpack devtool里的7种SourceMap模式
2019/01/14 Javascript
微信小程序(订阅消息)功能
2019/10/25 Javascript
Python中的异常处理相关语句基础学习笔记
2016/07/11 Python
基于Linux系统中python matplotlib画图的中文显示问题的解决方法
2017/06/15 Python
python微信跳一跳系列之自动计算跳一跳距离
2018/02/26 Python
Python实现读取Properties配置文件的方法
2018/03/29 Python
python生成不重复随机数和对list乱序的解决方法
2018/04/09 Python
Python爬虫包BeautifulSoup学习实例(五)
2018/06/17 Python
Python面向对象程序设计构造函数和析构函数用法分析
2019/04/12 Python
Python:Numpy 求平均向量的实例
2019/06/29 Python
Django forms表单 select下拉框的传值实例
2019/07/19 Python
Python函数的默认参数设计示例详解
2019/12/01 Python
理解Django 中Call Stack机制的小Demo
2020/09/01 Python
Python文件操作及内置函数flush原理解析
2020/10/13 Python
BabyBjörn婴儿背带法国官网:BabyBjorn法国
2018/06/16 全球购物
JD Sports荷兰:英国领先的运动时尚零售商
2020/03/13 全球购物
FirstCry阿联酋儿童和婴儿产品网上购物:FirstCry.ae
2021/02/22 全球购物
公务员年总结的自我评价
2013/10/25 职场文书
审计工作个人的自我评价
2013/12/25 职场文书
英文导游欢迎词
2014/01/11 职场文书
自荐信写法介绍
2014/01/25 职场文书
团支部组织委员竞选稿
2015/11/21 职场文书
html+css 实现简易导航栏功能
2021/04/07 HTML / CSS
Python图像处理之图像拼接
2021/04/28 Python
在虚拟机中安装windows server 2008的图文教程
2022/06/28 Servers