IE和Firefox之间在JavaScript语法上的差异


Posted in Javascript onApril 22, 2016

尽管 JavaScript 历史上使用冗长而令人生厌的代码块来标的特定浏览器的时期已经结束了,但是偶尔使用一些简单的代码块和对象检测来确保一些代码在用户机器上正常工作依然是必要的。

这篇文章中,我会略述一下 Internet Explorer 和 Firefox 在 JavaScript 语法上不同的 7 个方面。

1. CSS “float” 属性

获取给定对象的特定 CSS 属性的基本语法是 object.style 属性,而且有连字符的属性要用骆驼命名法来代替。例如,获取一个 ID 为 “header” 的 div 的 background-color 属性,我们要用如下语法:

document.getElementById("header").style.borderBottom= "1px solid #ccc";

但是由于 “float” 是 JavaScript 的保留词,我们就无法使用 object.style.float 来获取 “float” 属性了。一下是我们在两种浏览器中的使用的方法:

IE 语法: 

document.getElementById("header").style.styleFloat = "left";

Firefox 语法: 

document.getElementById("header").style.cssFloat = "left";

2. 元素的计算样式

通过使用上述的 object.style.property, JavaScript 可以很容易的获取和修改对象的设定 CSS 样式。但是这一语法的局限在于,它只能取得内联在 HTML 里的样式,或者直接使用 JavaScript 设定的样式。style 对象不能获取使用外部样式表设定的样式。为了获取对象的”计算样式”,我们使用以下代码:

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”属性的情况,这两种浏览器使用不同的 JavaScript 方法来获取这个属性。

IE 语法: 

var myObject = document.getElementById("header");
var myAttribute = myObject.getAttribute("className");

Firefox 语法: 

var myObject = document.getElementById("header");
var myAttribute = myObject.getAttribute("class");

4. 获取 label 标签的 “for” 属性

和 3 一样,使用 JavaScript获取 label 的 “for” 属性也有不同语法。

IE 语法: 

var myObject = document.getElementById("myLabel");
var myAttribute = myObject.getAttribute("htmlFor");

Firefox 语法: 

var myObject = document.getElementById("myLabel");
var myAttribute = myObject.getAttribute("for");

对于 setAtrribute 方法来说也是同样的语法。

5. 获取光标位置

获取元素的光标位置比较少见,如果需要这么做,IE 和 Firefox 的语法也是不同的。这个示例代码是相当基础的,一般用作许多复杂事件处理的一部分,这里仅用来描述差异。需要注意的是,IE 中的结果和 Firefox 中是不同的,因此这个方法有些问题。通常,这个差异可以通过获取 “滚动位置” 来补偿 - 但那是另外一篇文章的课题了。

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 的语法项目 - alpha 透明是通过 CSS 来设置的。但是当对象通过 JavaScript 设置为淡入淡出时,这就需要通过获取 CSS 的 alpha 设定来实现,一般是在循环内部。要通过以下 JavaScript 来改变 CSS 代码:

IE 语法:

#myElement {
filter: alpha(opacity=50);
}

Firefox 语法:

#myElement {
opacity: 0.5;
}

要使用 JavaScript 获取这些值,需要使用 style 对象:

IE 语法: 

var myObject = document.getElementById("myElement");
myObject.style.filter = "alpha(opacity=80)";

Firefox 语法:

var myObject = document.getElementById("myElement");
myObject.style.opacity = "0.5";

当然,已经说到了,一般是在循环中间来改变 opcity/alpha,来创建动画效果,但这这是个简单的例子,只是为了明白地描述方法是如何实现地。

7个方面在JavaScript语法上不同的点,希望对大家的学习有所帮助。

Javascript 相关文章推荐
XML的代替者----JSON
Jul 21 Javascript
js常见表单应用技巧
Jan 09 Javascript
js的延迟执行问题分析
Jun 23 Javascript
window.location 对象所包含的属性
Oct 10 Javascript
javascript实现五星评价代码(源码下载)
Aug 11 Javascript
JavaScript识别网页关键字并进行描红的方法
Nov 09 Javascript
一个字符串中出现次数最多的字符 统计这个次数【实现代码】
Apr 29 Javascript
jQuery EasyUI之验证框validatebox实例详解
Apr 10 jQuery
vue教程之toast弹框全局调用示例详解
Aug 24 Javascript
vue登录注册及token验证实现代码
Dec 14 Javascript
iconfont的三种使用方式详解
Aug 05 Javascript
vue使用Google地图的实现示例代码
Dec 19 Javascript
动态加载JavaScript文件的两种方法
Apr 22 #Javascript
JavaScript记录光标在编辑器中位置的实现方法
Apr 22 #Javascript
在AngularJS中使用jQuery的zTree插件的方法
Apr 21 #Javascript
AngularJS中实现用户访问的身份认证和表单验证功能
Apr 21 #Javascript
解决JS组件bootstrap table分页实现过程中遇到的问题
Apr 21 #Javascript
javascript常见数字进制转换实例分析
Apr 21 #Javascript
BootStrap和jQuery相结合实现可编辑表格
Apr 21 #Javascript
You might like
The specified CGI application misbehaved by not returning a complete set of HTTP headers
2011/03/31 PHP
PHP随机数生成代码与使用实例分析
2011/04/08 PHP
探讨PHP中OO之静态关键字以及类常量的详解
2013/06/07 PHP
Yii实现多按钮保存与提交的方法
2014/12/03 PHP
php获取一定范围内取N个不重复的随机数
2016/05/28 PHP
PHP实现的mysql主从数据库状态检测功能示例
2017/07/20 PHP
PHP实现找出有序数组中绝对值最小的数算法分析
2017/08/07 PHP
JavaScript 函数调用规则
2009/09/14 Javascript
window.navigate 与 window.location.href 的使用区别介绍
2013/09/21 Javascript
jquery中html、val与text三者属性取值的联系与区别介绍
2013/12/29 Javascript
使用js判断TextBox控件值改变然后出发事件
2014/03/07 Javascript
yepnope.js使用详解及示例分享
2014/06/23 Javascript
浅析C/C++,Java,PHP,JavaScript,Json数组、对象赋值时最后一个元素后面是否可以带逗号
2016/03/22 Javascript
浅析JSONP技术原理及实现
2016/06/08 Javascript
详解小程序退出页面时清除定时器
2019/04/28 Javascript
vue excel上传预览和table内容下载到excel文件中
2019/12/10 Javascript
详解vue-flickity的fullScreen功能实现
2020/04/07 Javascript
Django 导出 Excel 代码的实例详解
2017/08/11 Python
python中abs&map&reduce简介
2018/02/20 Python
Django Web开发中django-debug-toolbar的配置以及使用
2018/05/06 Python
Python3批量生成带logo的二维码方法
2019/06/24 Python
在django-xadmin中APScheduler的启动初始化实例
2019/11/15 Python
python解析命令行参数的三种方法详解
2019/11/29 Python
利用matplotlib实现根据实时数据动态更新图形
2019/12/13 Python
python与mysql数据库交互的实现
2020/01/06 Python
解决Python pip 自动更新升级失败的问题
2020/02/21 Python
Python绘图实现台风路径可视化代码实例
2020/10/23 Python
联想韩国官网:Lenovo Korea
2018/05/10 全球购物
C#怎么让一个窗口居中显示?
2015/10/20 面试题
护理专业优质毕业生自荐书
2014/01/31 职场文书
投资建议书模板
2014/05/12 职场文书
空气环保标语
2014/06/12 职场文书
领导干部“四风”查摆问题个人整改措施
2014/10/28 职场文书
2014年发展党员工作总结
2014/11/12 职场文书
在职证明格式样本
2015/06/15 职场文书
python自动获取微信公众号最新文章的实现代码
2022/07/15 Python