JS常见的兼容性问题汇总

本文汇总了JavaScript在IE和Firefox中的常见兼容性问题,包括滚动条、获取样式、事件对象、事件监听等方面,并提供了相应的解决方法,如统一使用DOM方法、避免使用特定浏览器特性等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JS常见的兼容性问题汇总

  • 1> 滚动条:
document.documentElement.scrollTop || document.body.scrollTop
  • 2> 获取样式兼容
function getStyle(dom, styleName){
   
   
	return dom.currentStyle? dom.currentStyle[styleName] : getComputedStyle(dom)[styleName];
}
  • 3> 网页可视区域兼容
window.innerHeight || document.documentElement.clientHeight
window.innerWidth || document.documentElement.clientWidth
  • 4) 事件对象兼容
evt = evt || window.event;
  • 5) 阻止事件冒泡兼容
event.stopPropagation ? event.stopPropagation() : event.cancelBubble=true; 
  • 6)阻止默认行为兼容
evt.preventDefault?evt.preventDefault():evt.returnValue=false;
  • 7)事件监听兼容
if(document.all){
   
   
    dom.attactEvent(“onclick”, fn);
} else {
   
   
    dom.addEventListener(“click”, fn);
}

下面是一些Javascript的IE和Firefox(火狐)兼容性的常用例子

  • 1.document.formName.item(“itemName”) 问题
    说明:IE下,可以使用document.formName.item("itemName")document.formName.elements["elementName"];
    Firefox下,只能使用document.formName.elements["elementName"].
    解决方法:统一使用document.formName.elements["elementName"].

  • 2.集合类对象问题
    说明:IE下,可以使用()或[]获取集合类对象;Firefox下,只能使用[]获取集合类对象.
    解决方法:统一使用[]获取集合类对象.

  • 3.自定义属性问题
    说明:IE下,可以使用获取常规属性的方法来获取自定义属性,也可以使用getAttribute()获取自定义属性;Firefox下,只能使用getAttribute()获取自定义属性.
    解决方法:统一通过getAttribute()获取自定义属性.

  • 4.eval(“idName”)问题
    说明:IE下,可以使用eval("idName")getElementById("idName")来取得id为idName的HTML对 象;Firefox下只能使用getElementById("idName")来取得id为idName的HTML对象.
    解决方法:统一用getElementById(“idName”)来取得id为idName的HTML对象.

  • 5.变量名与某HTML对象ID相同的问题
    说明:IE下,HTML对象的ID可以作为document的下属对象变量名直接使用;Firefox下则不能.Firefox下,可以使用与HTML对象ID相同的变量名;IE下则不能。
    解决方法:使用document.getElementById(“idName”)代替document.idName.最好不要取HTML对象ID相同的变量名,以减少错误;在声明变量时,一律加上var,以避免歧义.

  • 6.const问题
    说明:Firefox下,可以使用const关键字或var关键字来定义常量;IE下,只能使用var关键字来定义常量.
    解决方法:统一使用var关键字来定义常量.

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

  • 8.window.event问题
    说明:window.event只能在IE下运行,而不能在Firefox下运行,这是因为Firefox的event只能在事件发生的现场使用. Firefox必须从源处加入event作参数传递。Ie忽略该参数,用window.event来读取该event。
    解决方法:
    IE&Firefox:
    Submitted(event)"/> …

function Submitted(evt) {
   
   
evt=evt?evt:(window
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值