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 相关文章推荐
12种不宜使用的Javascript语法整理
Nov 04 Javascript
js中Math之random,round,ceil,floor的用法总结
Dec 26 Javascript
利用jQuary实现文字浮动提示效果示例代码
Dec 26 Javascript
浅析C/C++,Java,PHP,JavaScript,Json数组、对象赋值时最后一个元素后面是否可以带逗号
Mar 22 Javascript
js-FCC算法-No repeats please字符串的全排列(详解)
May 02 Javascript
js登录滑动验证的实现(不滑动无法登陆)
Jan 03 Javascript
使用vue如何构建一个自动建站项目
Feb 05 Javascript
vue cli构建的项目中请求代理与项目打包问题
Feb 26 Javascript
jQuery实现的滑块滑动导航效果示例
Jun 04 jQuery
Vue触发隐藏input file的方法实例详解
Aug 14 Javascript
node中使用log4js4.x版本记录日志的方法
Aug 20 Javascript
js实现Element中input组件的部分功能并封装成组件(实例代码)
Mar 02 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
乱谈我对耳机、音箱的感受
2021/03/02 无线电
PHP计划任务之关闭浏览器后仍然继续执行的函数
2010/07/22 PHP
php中转义mysql语句的实现代码
2011/06/24 PHP
使用PHPMyAdmin修复论坛数据库的图文方法
2012/01/09 PHP
PHP实现把数字ID转字母ID
2013/08/12 PHP
phpStudy配置多站点多域名方法及遇到的403错误解决方法
2017/10/19 PHP
javascript将浮点数转换成整数的三个方法
2014/06/23 Javascript
用JavaScript实现使用鼠标画线的示例代码
2014/08/19 Javascript
深入理解jQuery layui分页控件的使用
2016/08/17 Javascript
理解JavaScript原型链
2016/10/25 Javascript
BootStrap按钮标签及基本样式
2016/11/23 Javascript
jquery实现瀑布流效果 jquery下拉加载新数据
2016/12/12 Javascript
深入讲解xhr(XMLHttpRequest)/jsonp请求之abort
2017/07/26 Javascript
小程序文字跑马灯效果
2018/12/28 Javascript
浅谈Node 异步IO和事件循环
2019/05/05 Javascript
JS eval代码快速解密实例解析
2020/04/23 Javascript
python操作xml文件详细介绍
2014/06/09 Python
Python是编译运行的验证方法
2015/01/30 Python
Python中operator模块的操作符使用示例总结
2016/06/28 Python
浅谈django model postgres的json字段编码问题
2018/01/05 Python
python实现搜索文本文件内容脚本
2018/06/22 Python
python绘制地震散点图
2019/06/18 Python
python mysql断开重连的实现方法
2019/07/26 Python
Python分割训练集和测试集的方法示例
2019/09/19 Python
python 用 xlwings 库 生成图表的操作方法
2019/12/22 Python
django xadmin action兼容自定义model权限教程
2020/03/30 Python
Python引入多个模块及包的概念过程解析
2020/09/21 Python
松本清官方海外旗舰店:日本最大的药妆连锁店
2017/11/21 全球购物
宝拉珍选官方旗舰店:2%水杨酸精华液,收缩毛孔粗大和祛痘
2018/07/01 全球购物
预备党员的自我评价
2014/03/12 职场文书
同学会主持词
2014/03/18 职场文书
法学专业求职信
2014/07/15 职场文书
工程质检员岗位职责
2015/04/08 职场文书
不同品牌、不同型号对讲机如何互相通联
2022/02/18 无线电
Windows下载并安装MySQL8.0.x 版本的完整教程
2022/04/10 MySQL
CSS使用Flex和Grid布局实现3D骰子
2022/08/05 HTML / CSS