IE、FF、Chrome浏览器中的JS差异介绍


Posted in Javascript onAugust 13, 2013

因为浏览器公司各自为利益考虑,到目前为止各浏览器的HTML标准或是JS标准都还未统一。在平常的开发中,我们常使用的JS框架基本已经帮我们处理好了JS在各浏览器中的差异,但作为一个开发人员,还是有需要了解JS在浏览器中的差异。

FF、Chrome:没有window.event对象
FF、Chrome:没有window.event对象,只有event对象,IE里只支持window.event,而其他主流浏览器两者都支持,所以一般写成:function handle(e){e = e || event;}

获取HTML元素
IE:支持el.name 、el.getAttribute(name)
FF、Chrome:基本属性支持el.name其余属性仅支持el.getAttribute(name)

自定义属性问题
IE下,可以使用获取常规属性的方法来获取自定义属性,也可以使用 getAttribute() 获取自定义属性;Firefox下,只能使用 getAttribute() 获取自定义属性。

Ajax请求
IE: new ActiveXObject()
FF、Chrome:new XMLHttpRequest()

获取HTML元素
IE:支持el.name 、el.getAttribute(name)
FF、Chrome:基本属性支持el.name其余属性仅支持el.getAttribute(name)

innerText的使用
FF不支持innerText,它支持textContent来实现innerText,不过textContent没有像innerText一样考虑元素的display方式,所以不完全与IE兼容。如果不用textContent,字符串里面不包含HTML代码也可以用innerHTML代替。
if(document.all){
document.getElementById('element').innerText = "mytext";
} else{
document.getElementById('element').textContent = "mytext";
}

获取鼠标指针的位置
计算出鼠标指针的位置对你来说可能是非常少见的,不过当你需要的时候,在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;

获取可见区域、窗口的大小
有时,我们会需要找到浏览器的可视位置的大小,通常我们称之为"可见区域"。
在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;

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";

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";

元素的推算样式
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;

访问元素的"class"
"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");

Javascript 相关文章推荐
js中top/parent/frame概述及案例应用
Feb 06 Javascript
禁止ajax缓存获取程序最新数据的方法
Nov 19 Javascript
JS中实现简单Formatter函数示例代码
Aug 19 Javascript
angular.js之路由的选择方法
Sep 24 Javascript
JS实现超简单的汉字转拼音功能示例
Dec 22 Javascript
深入理解JavaScript中的尾调用(Tail Call)
Feb 07 Javascript
jQuery Masonry瀑布流布局神器使用详解
May 25 jQuery
代码整洁之道(重构)
Oct 25 Javascript
vue data恢复初始化数据的实现方法
Oct 31 Javascript
JS实现动态倒计时功能(天数、时、分、秒)
Dec 12 Javascript
微信小程序 flexbox layout快速实现基本布局的解决方案
Mar 24 Javascript
JavaScript代码实现简单计算器
Dec 27 Javascript
JavaScript的Module模式编程深入分析
Aug 13 #Javascript
jQuery教程 $()包装函数来实现数组元素分页效果
Aug 13 #Javascript
jQuery lazyLoad图片延迟加载插件的优化改造方法分享
Aug 13 #Javascript
js setTimeout 参数传递使用介绍
Aug 13 #Javascript
js setTimeout 常见问题小结
Aug 13 #Javascript
删除select中所有option选项jquery代码
Aug 12 #Javascript
js获取本机的外网/广域网ip地址完整源码
Aug 12 #Javascript
You might like
php数组(array)输出的三种形式详解
2013/06/05 PHP
JQuery中clone方法复制节点
2015/05/18 Javascript
JavaScript中调用函数的4种方式代码实例
2015/07/08 Javascript
JavaScript正则表达式的分组匹配详解
2016/02/13 Javascript
Easyui的组合框的取值与赋值
2016/10/28 Javascript
详解vue-cil和webpack中本地静态图片的路径问题解决方案
2017/09/27 Javascript
javaScript中的空值和假值
2017/12/18 Javascript
Nuxt.js实战详解
2018/01/18 Javascript
angularjs中$http异步上传Excel文件方法
2018/02/23 Javascript
Vue组件开发技巧总结
2018/03/04 Javascript
vue+element加入签名效果(移动端可用)
2019/06/17 Javascript
微信小程序跳转到其他网页(外部链接)的实现方法
2019/09/20 Javascript
JavaScript中的惰性载入函数及优势
2020/02/18 Javascript
解决Vue的项目使用Element ui 走马灯无法实现的问题
2020/08/03 Javascript
JS创建自定义对象的六种方法总结
2020/12/15 Javascript
[45:17]DOTA2-DPC中国联赛定级赛 Phoenix vs DLG BO3第三场 1月9日
2021/03/11 DOTA
使用python解析xml成对应的html示例分享
2014/04/02 Python
Python实现的中国剩余定理算法示例
2017/08/05 Python
python和ruby,我选谁?
2017/09/13 Python
Python实现抓取HTML网页并以PDF文件形式保存的方法
2018/05/08 Python
pandas DataFrame 根据多列的值做判断,生成新的列值实例
2018/05/18 Python
python实现判断一个字符串是否是合法IP地址的示例
2018/06/04 Python
浅谈Python2、Python3相对路径、绝对路径导入方法
2018/06/22 Python
使用python进行拆分大文件的方法
2018/12/10 Python
python验证码图片处理(二值化)
2019/11/01 Python
Python @property原理解析和用法实例
2020/02/11 Python
Python3如何在Windows和Linux上打包
2020/02/25 Python
python实现猜数游戏
2020/03/27 Python
python自定义函数def的应用详解
2020/06/03 Python
Virtualenv 搭建 Py项目运行环境的教程详解
2020/06/22 Python
html5的自定义data-*属性与jquery的data()方法的使用
2014/07/02 HTML / CSS
欧铁通票官方在线销售网站:Eurail.com
2017/10/14 全球购物
学生的自我鉴定范文
2013/10/24 职场文书
2014党员民主评议个人思想剖析发言
2014/09/19 职场文书
《百分数的认识》教学反思
2016/02/19 职场文书
详解apache编译安装httpd-2.4.54及三种风格的init程序特点和区别
2022/07/15 Servers