下面列出IE和非IE中常见的一些js兼容性问题。
 

//window.event  

IE:有window.event对象  

非IE:没有window.event对象。可以通过给函数的参数传递event对象。如onmousemove=doMouseMove(event)

解除冒泡的方法不同

IE:window.event.cancelBubble=true;
非IE:event.stopPropagation();

IE:会忽略节点之间生成的空白文本节点(比如换行字符)

非IE:不会忽略,会把节点之间的空白当成文本节点。

//鼠标当前坐标  

IE:event.x和event.y。  

非IE:event.pageX和event.pageY。  

通用:两者都有event.clientX和event.clientY属性。  
 

 

//event.srcElement问题  

说明:IE下,event对象有srcElement属性,但是没有target属性;Firefox下,even对象有target属性,但是没有srcElement属性.  

解决方法:使用obj(obj = event.srcElement ? event.srcElement :
event.target;)来代替IE下的event.srcElement或者Firefox下的event.target.
请同时注意event的兼容性问题。 
 

 
//添加事件  

IE:element.attachEvent("onclick", function);。  

非IE:element.addEventListener("click", function, true)。  


用:element.onclick=function。虽然都可以使用onclick事件,但是onclick和上面两种方法的效果是不一样
的,onclick
只有执行一个过程,而attachEvent和addEventListener执行的是一个过程列表,也就是多个过程。例
如:element.attachEvent("onclick", func1);element.attachEvent("onclick",
func2)这样func1和func2都会被执行。  

 

//标签的自定义属性  

IE:如果给标签div1定义了一个属性value,可以div1.value和div1["value"]取得该值。  

非IE:不能用div1.value和div1["value"]取。  

通用:div1.getAttribute("value")。  

 

//集合/数组类对象问题 

(1)现有问题: 

    现有代码中许多集合类对象取用时使用 (),IE 能接受,MF 不能。 

(2)解决方法: 

    改用 [] 作为下标运算。如:document.forms("formName") 改为 document.forms["formName"]。 

    又如:document.getElementsByName("inputName")(1) 改为 document.getElementsByName("inputName")[1] 

 

//HTML 对象的 id 作为对象名的问题 

(1)现有问题 

     在 IE 中,HTML 对象的 ID 可以作为 document 的下属对象变量名直接使用。在 MF 中不能。 

(2)解决方法 

     用 getElementById("idName") 代替 idName 作为对象变量使用 

 

//input.type属性问题  

说明:IE下input.type属性为只读;但是Firefox下input.type属性为读写 

 
//body问题  

Firefox的body在body标签没有被浏览器完全读入之前就存在;而IE的body则必须在body标签被浏览器完全读入之后才存在 

 

//firefox与IE的父元素(parentElement)的区别  

IE:obj.parentElement  

非IE:obj.parentNode  

解决方法: 因为非IE与IE都支持DOM,因此使用obj.parentNode是不错选择 

 

//innerText在IE中能正常工作,但是innerText在FireFox中却不行. 需用textContent

js在IE浏览器和非IE浏览器中的兼容性问题的更多相关文章

  1. CSS hack 如何区分所有IE浏览器和非IE浏览器

    网上方法很多,例如,测试后得出以下结论,多余的话不说了,直入主题: 1.所有的推理IE浏览器 正解:此写法仅仅被lE浏览器识别,非IE浏览器不识别. <!--[if IE]> <st ...

  2. IE浏览器与非IE浏览器JS日期兼容性问题处理

    执行语句 console.log(new Date("2017-07-04 18:40").getTime()); 在IE浏览器中打印出:NAN 在非IE浏览器中打印出:14991 ...

  3. js方法区分IE浏览器和非IE浏览器

    可以从IE特有的方法和非IE特有的方法来区分不同的浏览器 1.为元素添加事件监听: 非IE:.addEventListener("click",show,false)//第三个参数 ...

  4. 非ie浏览器必备函数常识

    场景描述: 我们都知道IE浏览器和非IE浏览器都有很多功能一样但写法不同,或者各自都有一些自己独特的方法,那么为了保持兼容性和便于编写,我们可以通过这两个方法给非IE浏览器的对象增加自己没有,但IE有 ...

  5. 兼容IE9以下和非IE浏览器的原生js事件绑定函数

    事件绑定函数的demo如下: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "htt ...

  6. js /jquery停止事件冒泡和阻止浏览器默认事件

    1>js阻止冒泡事件 var el = window.document.getElementById("a"); el.onclick = function (e) { // ...

  7. ASP.NET MVC 使用Jquery Uploadify 在非IE浏览器下Http Error的解决方案

    解决Uploadify上传控件在非IE浏览器中不工作,需要做如下2步修改: 1.Global.asax文件中,实现Application_BeginRequest函数: void Applicatio ...

  8. JS判断客户浏览器是否是IE8浏览器、jQuery判断浏览器内核

    今天在使用encharts的时候由于要兼容IE8,所以最终决定在非IE8浏览器使用encharts,在IE8使用amcharts.于是需要使用JS判断使用的浏览器版本: function IEVers ...

  9. html页面中js判断浏览器是否是IE浏览器及IE浏览器版本

    HTML里: HTML代码中,在编写网页代码时,各种浏览器的兼容性是个必须考虑的问题,有些时候无法找到适合所有浏览器的写法,就只能写根据浏览器种类区别的代码,这时就要用到判断代码了.在HTML代码中, ...

随机推荐

  1. HDU 2612 -Find a way (注重细节BFS)

    主题链接:Find a Way 题目不难,前几天做,当时准备写双向BFS的,后来处理细节上出了点问题,赶上点事搁置了.今天晚上重写的,没用双向,用了两次BFS搜索,和双向BFS 道理差点儿相同.仅仅是 ...

  2. android 编译共享ccache的缓存

    1. android自带的ccache版本号(2.4版本号)过低,是无法支持以上的功能的,须要使用新版ccache. 2. 最新的ccache请到http://ccache.samba.org/dow ...

  3. B二分法

    <span style="color:#330099;">/* B - 二分法 基金会 Time Limit:1000MS Memory Limit:65536KB 6 ...

  4. 聊聊单元測试(一)——EasyMock

    一.单元測试是保证软件质量的重要方法. 单元測试是对系统中某个模块功能的验证,但我们总会遇到这样那样的问题,导致測试代码非常难编写.最直接的一个原因便是强耦合关系,被測试者依赖一些不easy构造,比較 ...

  5. C#中设计Fluent API

    C#中设计Fluent API 我们经常使用的一些框架例如:EF,Automaper,NHibernate等都提供了非常优秀的Fluent API, 这样的API充分利用了VS的智能提示,而且写出来的 ...

  6. DOS批处理的字符串功能

    原文:DOS批处理的字符串功能 DOS批处理的字符串功能 批处理有着具有非常强大的字符串处理能力,其功能绝不低于C语言里面的字符串函数集.批处理中可实现的字符串处理功能有:截取字符串内容.替换字符串特 ...

  7. 网站静态化处理—web前端优化—下【终篇】(13)

    网站静态化处理—web前端优化—下[终篇](13) 本篇继续web前端优化的讨论,开始我先讲个我所知道的一个故事,有家大型的企业顺应时代发展的潮流开始投身于互联网行业了,它们为此专门设立了一个事业部, ...

  8. PHP 调用微信JS-SDK 开发详解 [网摘]

    一:准备文件,并将文件置于网站根目录下 access_token.json {"access_token":"","expire_time" ...

  9. Windows系统服务的编写。

    实验资源下载地址:点击打开链接 只是不知道能不能从服务向桌面进程传递消息,,就像两个桌面进程之间用Sendmessage似的..希望有知道的大神可以指点一下..不胜感激.. 因为微软在Vista之后, ...

  10. Java获取系统相关信息System.getProperty()

    java.version Java 运行时环境版本 java.vendor Java 运行时环境供应商 java.vendor.url Java 供应商的 URL java.home Java 安装目 ...