`
yiminghe
  • 浏览: 1465446 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

just another event model

阅读更多

事件模型也算是客户端兼容性的一个长期问题,早期 jquery 作者甚至因为这方面获过奖 ?一般来说 attachEvent 以及 addEventListener 已经基本够用,特别是 attachEvent 可以给回调传递事件参数 了,不用考虑怪异的 window.event

 

div.onclick=function(){
alert(window.event==window.event); // => false
setTimeout(function(){
  alert(window.event) // => null
},0);
}
 

 

可仍然不是完美的.

 

attachEvent 传入的参数似乎仅仅是 window.event 的指针:

 

document.getElementById("input1").attachEvent("onclick",function(e){
        var e2=e;
        alert(e2==e);
        setTimeout(function(){
            alert(e2==e);
            alert(e2.type);
            alert(e.type);
        },10);
    });

 

并且只在当前事件处理器同步处理内有效,一旦异步读取就会抛出 error

 

 

attachEvent :

 

1. 没有 event.currentTarget ,重用函数就不行了

 

2.回调中 this 无意义得指向 window .

 

3.多个回调绑定同一事件,触发顺序竟然是 random

 

4.标准事件缺失:hashchange

 

5.需要模拟一些有用的事件:valuechange

 

6.修正:其实这种方式不会导致循环引用而造成内容泄露,节点并没有属性指向绑定的事件函数。

 

addEventListener

 

1.标准控制下缺失了不少有用事件,需要事件模型来进行辅助模拟: focusin /out , mouseenter /leave

 

2. this 死板,只能是当前监听元素

 

JAEM

 

so 在巨人( jquery )的肩上,kissy 有了个不一样的事件模型 :

 

 

 

区分普通对象(继承 EventTarget)的自定义事件监听与触发以及 dom 节点的原生事件监听与触发.

 

 

1.每个元素每个对象对应一个系统事件回调,系统回调关联当前注册源解决 currentTarget 与 this,normalize 后调用用户事件回调

 

2.通过绑定时传入 scope 来实现用户事件回调定制 this

 

3.自身实现用户回调队列,保证用户回调触发顺序(先进先出)

 

4.通过钩子实现特殊事件,模拟事件的无缝接入。

 

 

 

 

 

 

 

 

 

  • 大小: 35.2 KB
分享到:
评论
2 楼 yiminghe 2011-07-25  
hax 写道
太言简意赅了吧,多给点文档?呵呵。

大纲啦,对jq的一点变化,可以具体看代码
https://github.com/kissyteam/kissy/tree/dev/src/event
这个要写明白太长了
1 楼 hax 2011-07-25  
太言简意赅了吧,多给点文档?呵呵。

相关推荐

    Just Another

    标题 "Just Another" 可能是指的某个设计项目或者软件工具的名称,它与字体设计或使用有关。在IT行业中,字体是用户界面设计的重要组成部分,它可以极大地影响用户体验和信息传达的效果。描述中的 "Just Another" ...

    Android-Just-Another-Android-App.zip

    Android-Just-Another-Android-App.zip,一个android基础应用程序,包含大量的酷库/配置,安卓系统是谷歌在2008年设计和制造的。操作系统主要写在爪哇,C和C 的核心组件。它是在linux内核之上构建的,具有安全性优势。

    MODE_Switch2.rar_The Just_event triggered

    MODE_Switch1Processing multi-interrupt request needs to set the priority of these interrupt requests. The IRQ flags of the 7 interrupt ... Just only any the event occurs and the IRQ will be logic "1".

    Just Another Tour Creator

    一个国外的全景虚拟漫游软件。支持一下的插件 * krpano (www.krpano.com) * PurePlayer or PurePlayerPro-Plugin (www.immervision.com) ... * PTViewer by Helmut Dersch and/or (Fulvio Senore) ...

    just-another-stamp-font-demo.zip_DEMO_font

    《Just Another Stamp Font Demo: 一款适用于Windows的字体展示与试用》 在设计和排版领域,字体的选择是至关重要的元素,它能够为文本赋予特定的风格和情感。"Just Another Stamp Font Demo"就是这样一款专为...

    jagsUI:R包,用于从R内部运行JAGS(Just Another Gibbs Sampler)分析

    该软件包从R内部运行JAGS (Just Another Gibbs Sampler)分析。 它充当rjags包中功能的包装器和备用接口,并添加了一些自定义输出和图形选项。 这也使并行运行的链条既快速又容易。 您可以从安装该软件包,也可以...

    Android代码-Beat Keeper

    BeatKeeper Just another android metronome! Beat Keeper @ Google Play See Also: Master's Touch: Crafting a Metronome with Audio Synthesis

    Just Another Desktop Clock-开源

    《Just Another Desktop Clock:开源桌面时钟的魅力与技术解析》 在当今的数字时代,桌面时钟虽然看似简单,但其背后蕴含的技术和创新依然值得我们深入探讨。"Just Another Desktop Clock"是一款开源的桌面时钟软件...

    Just Another Forum-开源

    《Just Another Forum:一款速度与效能兼备的开源论坛系统》 Just Another Forum(简称JAF)是一款开源的论坛软件,其设计灵感来源于PHPBB2,但在此基础上进行了诸多优化和创新,尤其在性能和用户体验方面表现突出...

    OFDM_MULTI.rar_The Just_block type ofdm_channel model_wimax_wima

    OFDM Signal generation and ... Just run the Model and with different SNRs in the Channel Block observe the performance of the OFDM. Please leave your feedback for the model so that we can improve it.

    Just Another Game Engine-开源

    **Just Another Game Engine (JAGE)** 是一个专为游戏开发设计的开源软件项目,它具有跨平台兼容性,能够在多种操作系统上运行。JAGE 的核心设计理念是模块化和设计模式的广泛应用,这使得该引擎能够灵活地适应各种...

    Just Another Web Mail-开源

    《Just Another Web Mail 开源项目解析》 "Just Another Web Mail",简称为JAWMail,是一个开源的Webmail系统,旨在提供一个功能丰富的、可定制化的邮件客户端服务。这款应用支持MIME邮件标准,拥有地址簿管理功能...

    Just Another Multipart Parser-开源

    标题提到的"Just Another Multipart Parser"(JAMPP)正是针对这种编码方式的一种开源解析器,它专门用于处理RFC 1867定义的Multipart / form-data格式的数据。 Multipart / form-data是一种在HTTP请求中传输多个...

    Just Another Non-Artistic Tool-开源

    (Janat:Just Another Non-Artistic Tool)是一种简单且用户友好的用Java编写的矢量绘图软件。 它的特殊性是将数据存储在SQL数据库中。 这些事实使它能够在网站上运行或将数据存储在远程站点上

    JASS培训班教程,制作自己的冰封王座地图

    本教程将带你深入探索JASS(Just Another Scripting System)编程语言,教你如何通过JASS来制作自己的冰封王座地图。 JASS是暴雪娱乐为魔兽争霸III地图编辑器设计的一种脚本语言,它允许地图制作者编写复杂的逻辑和...

    JANH - Just Another News Handler-开源

    标题“JANH - Just Another News Handler-开源”揭示了我们正在讨论的是一款名为JANH的开源新闻处理软件。"Just Another News Handler"可能是开发者对这个项目的谦虚表述,暗示它是一个标准的新闻处理工具,但通过...

    Just Another Interpreted Language-开源

    标题 "Just Another Interpreted Language-开源" 指向的是一种开源的、解释型的编程语言。在编程世界中,解释型语言与编译型语言相对,它们不预先一次性转换为机器代码,而是逐行在运行时由解释器解析执行。这种特性...

    justtrustme v4版本

    justtrustme v4版本

    Android代码-利用注解自动生成Gson‘s Model的库

    2.Just write a jsonModel name 3.Build the project (->Make Project) Then you can use UserInfo to do something~ GIF Demo Picture is big,wait a minute... Usage 1.Add apt in project's build.gradle ...

    JAVT - Just Another Voice Transformer:只是另一个语音识别和文本到语音软件。-开源

    JAVT 或 Just Another Voice Transformer(以前称为 Just Another Video Transcriber)是一种语音识别软件,它还支持文本到语音和简单的媒体转换。 JAVT 允许您使用 ffmpeg 从视频文件转换为音频 wav 文件,然后使用...

Global site tag (gtag.js) - Google Analytics