JS在IE和Firefox之间的区别

JS代码在IE和Firefox之间的区别,16个,非常实用。

1.    HTML 对象的 id 作为对象名的问题
IE:HTML 对象的 ID 可以作为 document 的下属对象变量名直接使用
FF:不支持
解决方法:使用document.getElementById替代document.all

2.       如果控件只有name,没有id, 用getElementById时:
IE:可以找到对象
FF:返回NULL
解决方法:所有控件必须设置ID属性

3.       Evel:
IE:支持,利用 eval(idName) 可以取得 id 为 idName 的 HTML 对象
FF:不支持。
解决方法:统一使用getElementById(idName) 代替 eval(idName)。

4.       Event:
IE:用全局对象window.event
FF:event只能在事件发生的现场使用,在调用函数时传入event对象
解决方法:使用之前做一下浏览器类型判断,各用各的。

5.       对象名称中美元符号‘$’改为使用下划线‘_’

6.       集合类对象问题
IE:可以使用()或[]获取集合类对象
FF:只能使用[]获取集合类对象
现有代码中存在许多,不能在 FF 下运行
解决方法:统一使用[]获取集合类对象。document.form.item("itemName") 这样的语句改为document.form.elements["elementName"]

7.       变量名与某 HTML 对象 id 相同的问题
IE:不能使用与 HTML 对象 id 相同的变量名
FF:可以使用
解决方法:在声明变量时,一律加上 var ,以避免歧义,这样在 IE 中亦可正常运行。
此外,最好不要取与 HTML 对象 id 相同的变量名,以减少错误。

8.       Event定位问题
IE:支持event.x 和event.y
FF:支持event.pageX和event.pageY
解决方法,统一使用event.clientX和event.clientY,但是在FF中event.clientX 与 event.pageX 有微妙的差别(当整个页面有滚动条的时候),不过大多数时候是等效的。如果要完全一样,可以判断浏览器类型后对应使用。

9.       父结点的问题
IE:parentElement parentElement.children
FF:parentNode parentNode.childNodes
childNodes的下标的含义在IE和FF中不同,FF使用DOM规范,childNodes中会插入空白文本节点。一般可以通过node.getElementsByTagName()来回避这个问题。

当html中节点缺失时,IE和FF对parentNode的解释不同,例如
<form>
<table>
  <input/>
</table>
</form>
IE:input.parentNode的值为空节点
FF:input.parentNode的值为form
FF中节点没有removeNode方法,必须使用如下方法 node.parentNode.removeChild(node)

10.   const 问题
现有问题:
IE:不支持 const 关键字。如 const constVar = 32; 在IE中这是语法错误。
FF:支持
解决方法:不使用 const ,以 var 代替。

11.   body 对象
IE:在body标签完全被读入之后才存在
FF:在body标签没有被浏览器完全读入之前就存在

12.   自定义属性问题
IE:可以使用获取常规属性的方法来获取自定义属性,也可以使用getAttribute()获取自定义属性
FF:只能使用getAttribute()获取自定义属性.
解决方法:统一通过getAttribute()获取自定义属性

13.   event.srcElement问题
IE:even.srcElement
FF:even.target
解决方法:使用时判断浏览器类型,各用各的。

14.   模态和非模态窗口
IE:支持模态和非模态窗口
FF:不支持
解决方法:直接使用window.open(pageURL,name,parameters)方式打开新窗口。如果需要将子窗口中的参数传递回父窗口,可以在子窗口中使用window.opener来访问父窗口。

15.   innerText
IE:innerText
FF:textContent

16.   类似 obj.style.height = imgObj.height 的语句
IE:有效
FF:无效
解决方法:统一使用obj.style.height = imgObj.height + 'px';

时间: 2025-01-30 06:41:05

JS在IE和Firefox之间的区别的相关文章

JS在IE和FireFox之间常用函数的区别小结_javascript技巧

1.event.srcElement 复制代码 代码如下: //srcElement只能在IE下使用target是FireFox使用的,下面是兼容性写法 var obj = e.srcElement ? e.srcElement : e.target; 2.e.originalEvent.x 复制代码 代码如下: // e.originalEvent.x 只能在IE下使用,FireFox只能使用e.originalEvent.layerX,下面是兼容性写法 var positionX = e.o

引用 js在IE与FF之间的区别详细解析_javascript技巧

js调试工具推荐firefox的firebug插件 能够给js设置断点执行 能够运行时修改css样式 查看dom模型等 ☆IE8自带的developerbar也很不错 ☆打开firefox所有js警告:在地址栏里录入:about:config双击,设置javascriptoptionrestict打开为true能够看到很多警告,利于纠错 ☆IE->firefoxjavascript类 △document.all("id")->document.getElementById(

JS中typeof与instanceof之间的区别总结_javascript技巧

JavaScript 中 typeof 和 instanceof 常用来判断一个变量是否为空,或者是什么类型的.但它们之间还是有区别的: typeof typeof 是一个一元运算,放在一个运算数之前,运算数可以是任意类型. 它返回值是一个字符串,该字符串说明运算数的类型.typeof 一般只能返回如下几个结果: number,boolean,string,function,object,undefined.我们可以使用 typeof 来获取一个变量是否存在,如 if(typeof a!="un

总结js在IE与FireFox中不同的用法区别

总结js在ie与firefox中不同的用法区别 1. document.form.item 问题 问题: 现有代码中存在许多 document.formname.item("itemname") 这样的语句,不能在firefox下运行 解决方法: 统一使用 document.formname.elements["elementname"]          2. 集合类对象问题   问题: ie下,可以使用()或[]获取集合类对象:firefox下,只能使用[]获取

node.js中的定时器nextTick()和setImmediate()区别分析_node.js

1.node中使用定时器的问题在于,它并非精确的.譬如setTimeout()设定一个任务在10ms后执行,但是在9ms后,有一个任务占用了5ms,再次轮到定时器时,已经耽误了4ms. 好了node中的定时器就简单的讲这么多. 2.看代码: 复制代码 代码如下: process.nextTick(function(){     console.log("延迟执行"); }); console.log("正常执行1"); console.log("正常执行2

总结JavaScript三种数据存储方式之间的区别_基础知识

sessionStorage .localStorage 和 cookie 之间的共同点:都是保存在浏览器端,且同源的. sessionStorage .localStorage 和 cookie 之间的区别:cookie数据始终在同源的http请求中携带(即使不需要),即cookie在浏览器和服务器间来回传递.而sessionStorage和localStorage不会自动把数据发给服务器,仅在本地保存.cookie数据还有路径(path)的概念,可以限制cookie只属于某个路径下. 存储大

请问下 javaScript中两个等于号和三个等于号之间的区别、、

问题描述 百度了下 还查不到..所以 到这里来问下 "==" 和"==="之间的区别..... 解决方案 一言以蔽之:==先转换类型再比较,===先判断类型,如果不是同一类型直接为false.解决方案二:我是用google搜的 我又用百度搜了一下 同样的关键字 google能搜到 baidu搜不到 呵呵 这就是差距解决方案三:===表示恒等于,比较的两边要绝对的相同运行体会一下以下的代码就会清楚了:alert(0 == ""); // truea

SEO优化人员是否知道标签与栏目、专题、关键词之间的区别

摘要: 相比网站的关键词我们对文章标签的关注实在太少,不知道作为SEO优化人员的你是否知道标签与栏目.专题.关键词之间的区别?也许你会认为这是无关紧要的事情,如果是这样的话只能 相比网站的关键词我们对文章标签的关注实在太少,不知道作为SEO优化人员的你是否知道标签与栏目.专题.关键词之间的区别?也许你会认为这是无关紧要的事情,如果是这样的话只能说你是一个不善于思考问题的人,永远成不一个真正的SEO,因为SEO本身就是一个需要注重细节的职业.笔者发现现在几乎所有的文章都支持添加标签的功能,为什么一

开源领域常用的许可协议和它们之间的区别

越来越多的开发者与设计者希望将自己的产品开源,以便其他人可以在他们的代码基础上做更多事,开源社区也因此充满生机.在我们所能想到的应用领域,都有开源软件存在(象 WordPress,Drupal 这些开源CMS).然而很多人对开源许可并不了解,本文介绍开源领域常用的几种许可协议以及它们之间的区别. 什么是许可协议? 什么是许可,当你为你的产品签发许可,你是在出让自己的权利,不过,你仍然拥有版权和专利(如果申请了的话),许可的目的是,向使用你产品的人提供一定的权限. 不管产品是免费向公众分发,还是出