1。window.event
{分析}首先查看一段代码
复制代码代码如下所示:
函数et()
{
警报(事件);
}
在伊江
运行的上述代码的结果是{ },并且它不在Firefox上运行。
因为在伊江,事件可以直接用作窗口对象的
属性,但在Firefox中,W3C模型是通过引用的方式来传播事件的。也就是说,你需要为你的函数提供一个事件响应接口。
{
兼容性处理}添加事件判断并根据不同的
浏览器获得
正确的事件:
复制代码代码如下所示:
函数et()
{
EVT = evtevt:(窗口。eventwindow。事件:空);
与IE和Firefox兼容
警报(EVT);
}
2。
键盘值的获取
{分析
显示} IE和Firefox具有不同的获取键盘值的
方法。这是event.which在Firefox是相当于在IE.的
情况下相互理解,兼容性测试的键码,其中,在键盘事件字符码可以称。
{兼容处理}
复制代码
复制代码代码如下所示:
功能mykeypress(EVT){
与IE和Firefox兼容的移动对象/
极值理论(EVT)=(EVT:(窗口。事件)window.event:)
用IE和Firefox / /得到的移动对象的关键兼容
var关键字= EVT。keycodeevt。关键词:evt.which;
如果(evt.ctrlkey(关键= = 13 | | {关键= = 10))
在同一时间
输入和输入
做某事;
}
}
收购3。source of events
{注}使用事件委托分析时,可以从该事件到底确定哪些元素,通过事件源,然而,在伊江,事件对象有一个srcelement财产,但没有
目标属性;Firefox,即使对象有一个属性,但不是srcelement属性。
{兼容处理}
复制代码代码如下所示:
元=功能(EVT){ / /捕获当前事件对象
EVT = EVT | | window.event;
返回
(obj =事件。srcelementevent。srcelement:事件。目标;);
}
4。事件监测
在事件监听器处理{分析},即提供attachevent和detachevent两个接口,而Firefox提供addEventListener和removeEventListener。
最简单的兼容性处理是封装两套接口:
复制代码代码如下所示:
函数AddEvent(元素、事件,Handler){
If (elem.attachEvent) {
elem.attachevent(+事件名称,函数(){
handler.call(元)});
我们使用调用回调函数( / /),让这一点元素
} else if(元素。addEventListener){
elem.addeventlistener(事件,处理,假);
}
}
功能removeevent(元素、事件,Handler){
如果(元素。detachevent){
elem.detachevent(+事件名称,函数(){
handler.call(元)});
我们使用调用回调函数( / /),让这一点元素
} else if(元素。removeEventListener){
elem.removeeventlistener(事件,处理,假);
}
}
我们需要特别注意。在Firefox中,事件处理函数中的这个值指向侦听器本身,而不是在IE.,可以使用回调函数调用使当前上下文指向侦听器的元素。
5。
鼠标的
位置 {分析}在IE,即使对象x和y的属性,但没有pagex,pagey属性;Firefox,即使对象有pagex和pagey属性,但没有X,X属性。
{ }兼容处理使用MX(MX =事件。X事件。X:事件。pagex;)而不是event.pagex IE下的事件下,X或Firefox,复杂点也考虑到绝对位置。
复制代码代码如下所示:
功能getabspoint(e){
var x = y = e.offsettop e.offsetleft;
而(E = e.offsetparent){
x = e.offsetleft;
Y = e.offsettop;
}
警报()
}