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 相关文章推荐
深入理解JSON数据源格式
Jan 10 Javascript
js和jquery如何获取图片真实的宽度和高度
Sep 28 Javascript
javascript根据时间生成m位随机数最大13位
Oct 30 Javascript
JavaScript实现点击自动选择TextArea文本的方法
Jul 02 Javascript
探究react-native 源码的图片缓存问题
Aug 24 Javascript
js实现登录与注册界面
Nov 01 Javascript
node基于puppeteer模拟登录抓取页面的实现
May 09 Javascript
JavaScript深入V8引擎以及编写优化代码的5个技巧
Jun 24 Javascript
微信小程序拼接图片链接无底洞深入探究
Sep 03 Javascript
layui动态加载多表头的实例
Sep 05 Javascript
关于layui 下拉列表的change事件详解
Sep 20 Javascript
Vue登录主页动态背景短视频制作
Sep 21 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中的注释、变量、数组、常量、函数应用介绍
2012/11/16 PHP
php selectradio和checkbox默认选择的实现方法详解
2013/06/29 PHP
PHP变量的定义、可变变量、变量引用、销毁方法
2013/12/20 PHP
php基于mcrypt的加密解密实例
2014/10/27 PHP
PHP截取指定图片大小的方法
2014/12/10 PHP
PHP中把数据库查询结果输出为json格式简单实例
2015/04/09 PHP
浅谈PHP中的数据传输CURL
2016/09/06 PHP
PHP析构函数destruct与垃圾回收机制的讲解
2019/03/22 PHP
基于php伪静态的实现方法解析
2020/07/31 PHP
PHP中的异常处理机制深入讲解
2020/11/10 PHP
JavaScript中的集合及效率
2010/01/08 Javascript
理解Javascript_01_理解内存分配原理分析
2010/10/11 Javascript
Js 时间间隔计算的函数(间隔天数)
2011/11/15 Javascript
探讨JavaScript标签位置的存放与功能有无关系
2016/01/15 Javascript
使用jquery实现的循环连续可停顿滚动实例
2016/11/23 Javascript
JavaScript数据结构学习之数组、栈与队列
2017/05/02 Javascript
bootstrap table表格插件使用详解
2017/05/08 Javascript
element上传组件循环引用及简单时间倒计时的实现
2018/10/01 Javascript
Python安装Imaging报错:The _imaging C module is not installed问题解决方法
2014/08/22 Python
在Python程序中进行文件读取和写入操作的教程
2015/04/28 Python
Python与Java间Socket通信实例代码
2017/03/06 Python
利用python获取Ping结果示例代码
2017/07/06 Python
Python编程中NotImplementedError的使用方法
2018/04/21 Python
在pycharm中使用git版本管理以及同步github的方法
2019/01/16 Python
Python生成rsa密钥对操作示例
2019/04/26 Python
基于Python的一个自动录入表格的小程序
2020/08/05 Python
关于Python不换行输出和不换行输出end=““不显示的问题(亲测已解决)
2020/10/27 Python
html5实现canvas阴影效果示例
2014/05/07 HTML / CSS
英国最全面的橄榄球联盟门票网站:Live Rugby Tickets
2018/10/06 全球购物
一套软件测试笔试题
2014/07/25 面试题
企业军训感想
2014/02/07 职场文书
2014年秋季开学寄语
2014/08/02 职场文书
2014第二批党的群众路线教育实践活动对照检查材料思想汇报
2014/09/18 职场文书
2016年综治宣传月活动宣传标语口号
2016/03/16 职场文书
52条SQL语句教你性能优化
2021/05/25 MySQL
Java实现简易的分词器功能
2021/06/15 Java/Android