您的位置:首页 > Web前端 > JavaScript

IE和FF之js 区别

2010-03-07 04:14 204 查看
function getEvent() //同时兼容ie和ff的写法

{

if(document.all) return window.event;

func=getEvent.caller;

while(func!=null){

var arg0=func.arguments[0];

if(arg0)

{

if((arg0.constructor==Event || arg0.constructor ==MouseEvent) || (typeof(arg0)=="object" && arg0.preventDefault && arg0.stopPropagation))

{

return arg0;

}

}

func=func.caller;

}

return null;

}

1.

使用
document.getElementById



document.all(IE)

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';
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: