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 相关文章推荐
JavaScript XML实现两级级联下拉列表
Nov 10 Javascript
JQuery选择器特辑 详细小结
May 14 Javascript
JS获取后台Cookies值的小例子
Mar 04 Javascript
HTML页面弹出居中可拖拽的自定义窗口层
May 07 Javascript
详谈jQuery操纵DOM元素属性 attr()和removeAtrr()方法
Jan 22 Javascript
JavaScript实现点击按钮就复制当前网址
Dec 14 Javascript
深入解析桶排序算法及Node.js上JavaScript的代码实现
Jul 06 Javascript
详解Vue使用命令行搭建单页面应用
May 24 Javascript
vue2.0在table中实现全选和反选的示例代码
Nov 04 Javascript
vue-cli webpack2项目打包优化分享
Feb 07 Javascript
Vue-router 切换组件页面时进入进出动画方法
Sep 01 Javascript
jQuery控制input只能输入数字和两位小数的方法
May 16 jQuery
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
弄了个检测传输的参数是否为数字的Function
2006/12/06 PHP
php结合ACCESS的跨库查询功能
2015/06/12 PHP
thinkphp3.x中变量的获取和过滤方法详解
2016/05/20 PHP
php如何修改SESSION的生存存储时间的实例代码
2017/07/05 PHP
Javascript 类型转换方法
2010/10/24 Javascript
用原生JavaScript实现jQuery的$.getJSON的解决方法
2013/05/03 Javascript
点击页面其它地方隐藏该div的两种思路
2013/11/18 Javascript
jquery dialog获取焦点的方法
2017/02/09 Javascript
基于JavaScript实现多级菜单效果
2017/07/25 Javascript
vue.js项目打包上线的图文教程
2017/11/16 Javascript
vuex页面刷新后数据丢失的方法
2019/01/17 Javascript
对TypeScript库进行单元测试的方法
2019/07/18 Javascript
webpack proxy 使用(代理的使用)
2020/01/10 Javascript
Vue获取微博授权URL代码实例
2020/11/04 Javascript
[31:47]夜魇凡尔赛茶话会 第三期01:选手知多少
2021/03/11 DOTA
为Python程序添加图形化界面的教程
2015/04/29 Python
深入讲解Python编程中的字符串
2015/10/14 Python
Python 字符串转换为整形和浮点类型的方法
2018/07/17 Python
Python 从一个文件中调用另一个文件的类方法
2019/01/10 Python
钉钉群自定义机器人消息Python封装的实例
2019/02/20 Python
Python 的字典(Dict)是如何存储的
2019/07/05 Python
Python3合并两个有序数组代码实例
2020/08/11 Python
python反编译教程之2048小游戏实例
2021/03/03 Python
html5中地理位置定位api接口开发应用小结
2013/01/04 HTML / CSS
客服端调用EJB对象的几个基本步骤
2012/01/15 面试题
医学生实习自我鉴定
2013/09/27 职场文书
致铅球运动员加油稿
2014/02/13 职场文书
大专应届毕业生求职信
2014/07/15 职场文书
离婚协议书怎样才有法律效力
2014/10/10 职场文书
幼儿园六一主持词开场白
2015/05/28 职场文书
入党积极分子党支部意见
2015/06/02 职场文书
给领导敬酒词
2015/08/12 职场文书
2016师德师风学习心得体会
2016/01/12 职场文书
小型企业的绩效考核制度模板
2019/11/21 职场文书
如何用JavaScript学习算法复杂度
2021/04/30 Javascript
Spring Cache和EhCache实现缓存管理方式
2021/06/15 Java/Android