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 相关文章推荐
让插入到 innerHTML 中的 script 跑起来的实现代码
Jul 01 Javascript
javascript支持firefox,ie7页面布局拖拽效果代码
Dec 20 Javascript
文本框根据输入内容自适应高度的代码
Oct 24 Javascript
js自动下载文件到本地的实现代码
Apr 28 Javascript
Flexigrid在IE下不显示数据的有效处理方法
Sep 04 Javascript
js实现有时间限制消失的图片方法
Feb 27 Javascript
jQuery EasyUI ProgressBar进度条组件
Feb 28 Javascript
基于Vue2.X的路由和钩子函数详解
Feb 09 Javascript
JavaScript解决浮点数计算不准确问题的方法分析
Jul 09 Javascript
vue如何解决循环引用组件报错的问题
Sep 22 Javascript
基于JavaScript获取base64图片大小
Oct 18 Javascript
vue 取出v-for循环中的index值实例
Nov 09 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十六进制颜色随机生成器功能示例
2017/07/24 PHP
ThinkPHP 3.2.3实现加减乘除图片验证码
2018/12/05 PHP
CL vs ForZe BO5 第四场 2.13
2021/03/10 DOTA
用js得到网页中所有的div的id
2020/10/19 Javascript
Lazy Load 延迟加载图片的 jQuery 插件
2010/02/06 Javascript
javascript面向对象之Javascript 继承
2010/05/04 Javascript
Jquery 表格合并的问题分享
2011/09/17 Javascript
javascript中注册和移除事件的4种方式
2013/03/20 Javascript
JS控制图片翻转示例代码(兼容firefox,ie,chrome)
2013/12/19 Javascript
js实现类似于add(1)(2)(3)调用方式的方法
2015/03/04 Javascript
JavaScript实现级联菜单的方法
2015/06/29 Javascript
jQuery弹层插件jquery.fancybox.js用法实例
2016/01/22 Javascript
javascript实现粘贴qq截图功能(clipboardData)
2016/05/29 Javascript
web 前端常用组件之Layer弹出层组件
2016/09/22 Javascript
js中的DOM模拟购物车功能
2017/03/22 Javascript
extjs简介_动力节点Java学院整理
2017/07/17 Javascript
js获取css的各种样式并且设置他们的方法
2017/08/22 Javascript
JavaScript的词法结构精华篇
2018/10/17 Javascript
node使用Mongoose类库实现简单的增删改查
2018/11/08 Javascript
javascript实现简单留言板案例
2021/02/09 Javascript
[48:53]2014 DOTA2华西杯精英邀请赛 5 25 LGD VS VG第一场
2014/05/26 DOTA
python根据用户需求输入想爬取的内容及页数爬取图片方法详解
2020/08/03 Python
python操作toml文件的示例代码
2020/11/27 Python
用 python 进行微信好友信息分析
2020/11/28 Python
利用Bootstrap实现漂亮简洁的CSS3价格表实例源码
2017/03/02 HTML / CSS
美国一家全面的在线零售鞋类公司:SHOEBACCA
2017/01/06 全球购物
香港现代设计家具品牌:Ziinlife Furniture
2018/11/13 全球购物
Linux如何修改文件和文件夹的权限
2013/09/05 面试题
组织关系转移介绍信
2014/01/16 职场文书
《掌声》教学反思
2014/02/23 职场文书
副处级干部考察材料
2014/05/17 职场文书
关于责任的演讲稿
2014/05/20 职场文书
关于幸福的感言
2015/08/03 职场文书
教师实习自我鉴定总结
2019/08/20 职场文书
Ajax请求超时与网络异常处理图文详解
2021/05/23 Javascript
详解如何使用Nginx解决跨域问题
2022/05/06 Servers