下面列出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. Call to undefined function mssql_connect()错误解决

    原文:Call to undefined function mssql_connect()错误解决 同事用php+mssql修改一个系统,却一直配置不了环境.遂做了一个测试,一般情况下我们会注意php ...

  2. C# Email邮件发送,功能是密码找回或者重置功能。

    原文:C# Email邮件发送,功能是密码找回或者重置功能. 最近根据公司需求,写个邮件发送.   这里面的传入的地址信息的参数都是经过加密的.  主要是保证用户信息的安全. 帮助类   using ...

  3. request的setAttribute()怎么用的?

    request.setAttribute()怎么用的?JSP1代码String [] test=new String[2];test[0]="1";test[1]="2& ...

  4. 操作jQuery集合搜索父元素

    搜索父元素 1.1parents()方法 parents()方法用于获取u当前匹配元素集合中的每个元素的祖先元素,根据需要还可以使用一个选择器进行筛选parents([selector]) 其中sel ...

  5. 如何使用linq操作datatable进行分组

    使用微软.net的孩子们应该都知道linq吧,要知道linq可是其他高级语言没有的技术,比如php,java等等,但是起初我对linq的认识只是停留在对 list<> 的泛型集合进行操作, ...

  6. JavaScript Date对象介绍

    原文:JavaScript Date对象介绍 Date 日期和时间对象 1. 介绍 Date对象,是操作日期和时间的对象.Date对象对日期和时间的操作只能通过方法. 2. 构造函数 2.1 new ...

  7. likely()与unlikely()

    he gcc C compiler has a built-in directive that optimizes conditional branches as either very likely ...

  8. Appium Android Bootstrap源码分析之简介

    在上一个系列中我们分析了UiAutomator的核心源码,对UiAutomator是怎么运行的原理有了根本的了解.今天我们会开始另外一个在安卓平台上基于UiAutomator的新起之秀--Appium ...

  9. JDK动态代理机制

    JDK Proxy OverView jdk的动态代理是基于接口的.必须实现了某一个或多个随意接口才干够被代理.并且仅仅有这些接口中的方法会被代理. 看了一下jdk带的动态代理api,发现没有样例实在 ...

  10. 转载:善待Redis中的数据

    Redis是我们数据的保管者,我们可以随时存随时取,大的小的,重要的不重要的,它都毫无怨言的帮我们保存着,甚至有些时候,我们变得很懒,存东西进去的时候顺便还贴张纸:"过了一个星期就帮我扔了吧 ...