javascript浏览器兼容教程的事件处理

javascript浏览器兼容教程的事件处理
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;
}
警报()
}
免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部