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 相关文章推荐
js 图片等比例缩放代码
May 13 Javascript
jquery获取tagName再进行判断
May 29 Javascript
javascript实现锁定网页、密码解锁效果(类似系统屏幕保护效果)
Aug 15 Javascript
EasyUI实现第二层弹出框的方法
Mar 01 Javascript
JS与jQuery遍历Table所有单元格内容的方法
Dec 07 Javascript
JS图片等比例缩放方法完整示例
Aug 03 Javascript
jQuery控制元素隐藏和显示
Mar 03 Javascript
聊聊JavaScript如何实现继承及特点
Apr 07 Javascript
JS实现随机生成10个手机号的方法示例
Dec 07 Javascript
javascript设计模式 ? 原型模式原理与应用实例分析
Apr 10 Javascript
Vue检测屏幕变化来改变不同的charts样式实例
Oct 26 Javascript
JavaScript实现鼠标移入随机变换颜色
Nov 24 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
php $_ENV为空的原因分析
2009/06/01 PHP
php生成随机密码的几种方法
2011/01/17 PHP
XAMPP安装与使用方法详细解析
2013/11/27 PHP
PHP中使用匿名函数操作数据库的例子
2014/11/17 PHP
一段批量给页面上的控件赋值js
2010/06/19 Javascript
javascript 仿QQ滑动菜单效果代码
2010/09/03 Javascript
Jquery事件的连接使用示例
2013/06/18 Javascript
瀑布流布局代码一例
2014/04/11 Javascript
利用jQuery实现漂亮的圆形进度条倒计时插件
2015/09/30 Javascript
微信小程序图片横向左右滑动案例
2017/05/19 Javascript
67 个节约开发时间的前端开发者的工具、库和资源
2017/09/12 Javascript
微信小程序实现选项卡功能
2020/06/19 Javascript
vue项目在安卓低版本机显示空白的原因分析(两种)
2018/09/04 Javascript
小程序组件之仿微信通讯录的实现代码
2018/09/12 Javascript
关于AOP在JS中的实现与应用详解
2019/05/06 Javascript
Vue+Typescript中在Vue上挂载axios使用时报错问题
2019/08/07 Javascript
如何基于JS截获动态代码
2019/12/25 Javascript
js实现带箭头的进度流程
2020/03/26 Javascript
[43:49]LGD vs CHAOS 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
python类定义的讲解
2013/11/01 Python
Python中的闭包详细介绍和实例
2014/11/21 Python
python中异常捕获方法详解
2017/03/03 Python
python画出三角形外接圆和内切圆的方法
2018/01/25 Python
解决django中ModelForm多表单组合的问题
2019/07/18 Python
Python如何生成xml文件
2020/06/04 Python
在django中实现choices字段获取对应字段值
2020/07/12 Python
用python读取xlsx文件
2020/12/17 Python
Java提供了哪些企业应用编程接口
2015/02/13 面试题
求职推荐信
2013/10/28 职场文书
建筑设计师岗位职责
2013/11/18 职场文书
离婚协议书范本(通用篇)
2014/11/30 职场文书
自主招生自荐信格式
2015/03/04 职场文书
酒店开业主持词
2015/07/02 职场文书
工人先锋号事迹材料(2016精选版)
2016/03/01 职场文书
升职感谢领导的话语及升职感谢信
2019/06/24 职场文书
如何用python识别滑块验证码中的缺口
2021/04/01 Python