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 相关文章推荐
dwz 如何去掉ajaxloading具体代码
May 22 Javascript
快速解决jQuery与其他库冲突的方法介绍
Jan 02 Javascript
获取中文字符串的实际长度代码
Jun 05 Javascript
javascript 获取HTML DOM父、子、临近节点
Jun 16 Javascript
JS中FRAME的操作问题实例分析
Oct 21 Javascript
浅析jquery如何判断滚动条滚到页面底部并执行事件
Apr 29 Javascript
jQuery easyUI datagrid 增加求和统计行的实现代码
Jun 01 Javascript
jQuery实现花式轮播之圣诞节礼物传送效果
Dec 25 Javascript
Easyui Datagrid自定义按钮列(最后面的操作列)
Jul 13 Javascript
EL表达式截取字符串的函数说明
Sep 22 Javascript
详解Vue CLI3 多页应用实践和源码设计
Aug 30 Javascript
vue 自定义组件添加原生事件
Apr 21 Vue.js
动态加载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
PHP 多维数组排序实现代码
2009/08/05 PHP
php中获取指定IP的物理地址的代码(正则表达式)
2011/06/23 PHP
php include类文件超时问题处理
2015/02/06 PHP
php实现简单的MVC框架实例
2015/09/23 PHP
php基于jquery的ajax技术传递json数据简单实例
2016/04/15 PHP
PHP学习记录之数组函数
2018/06/01 PHP
Windows平台PHP+IECapt实现网页批量截图并创建缩略图功能详解
2019/08/02 PHP
PHP设计模式之组合模式定义与应用示例
2020/02/01 PHP
javascript编程起步(第四课)
2007/02/27 Javascript
JQUERY 对象与DOM对象之两者相互间的转换
2009/04/27 Javascript
jQuery点击自身以外地方关闭弹出层的简单实例
2013/12/24 Javascript
判断复选框是否被选中的两种方法
2014/06/04 Javascript
JavaScript作用域示例详解
2016/07/07 Javascript
必备的JS调试技巧汇总
2016/07/20 Javascript
jQuery实现select模糊查询(反射机制)
2017/01/14 Javascript
ES6中参数的默认值语法介绍
2017/05/03 Javascript
jQuery.extend 与 jQuery.fn.extend的用法及区别实例分析
2018/07/25 jQuery
Vue实现左右菜单联动实现代码
2018/08/12 Javascript
vue 左滑删除功能的示例代码
2019/01/28 Javascript
小程序和web画三角形实现解析
2019/09/02 Javascript
简单了解JavaScript arguement原理及作用
2020/05/28 Javascript
Vue filter 过滤器、以及在table中的使用介绍
2020/09/07 Javascript
vue 通过base64实现图片下载功能
2020/12/19 Vue.js
Python 专题六 局部变量、全局变量global、导入模块变量
2017/03/20 Python
python 地图经纬度转换、纠偏的实例代码
2018/08/06 Python
使用python实现快速搭建简易的FTP服务器
2018/09/12 Python
PyQt4实时显示文本内容GUI的示例
2019/06/14 Python
Python matplotlib学习笔记之坐标轴范围
2019/06/28 Python
python实现模拟器爬取抖音评论数据的示例代码
2021/01/06 Python
英国文胸专家:AmpleBosom.com
2018/02/06 全球购物
P D PAOLA法国官网:西班牙著名的珠宝首饰品牌
2020/02/15 全球购物
优秀党员主要事迹
2014/01/19 职场文书
意外事故赔偿协议书
2016/03/22 职场文书
CocosCreator如何实现划过的位置显示纹理
2021/04/14 Javascript
为什么MySQL 删除表数据 磁盘空间还一直被占用
2021/10/16 MySQL
Python学习之包与模块详解
2022/03/19 Python