JSオブジェクト(非DOM要素)に対してセットしたハンドラが呼ばれた時のイベントオブジェクトとthisの扱い #353

Closed
simdy opened this Issue Jun 17, 2014 · 1 comment

Comments

Projects
None yet
2 participants
@simdy
Member

simdy commented Jun 17, 2014

ver.1.1.11より、hifiveではEventDispatcherのmixinを提供している。
これにより、通常のJavaScriptオブジェクト(非DOMオブジェクト)についても
add/removeEventListener()インターフェースを実装して
(DOM Eventsと同様のI/Fで)イベントの登録・発火・受信ができる。

しかし、非DOMオブジェクトの場合、イベントのバブリングという概念は通常存在せず、
またhifiveのMixin、およびhifive以外のライブラリの同様の実装でも、
イベントハンドラに渡されるオブジェクト(イベントオブジェクト)は
DOMのEventインターフェースを完全に実装していないことが多い。
かつ、非DOMオブジェクトあくまで登録・削除などのインターフェースを同じにしておくのが目的で
DOM EventsのPolyfillが目的ではない。

現在のhifiveはイベントオブジェクトはjQuery Eventオブジェクトとしてくるみ、
古いIEなどでのインターフェースの違いを吸収しインターフェースをそろえているが、
非DOMオブジェクトについては(そもそもDOMのイベントではないので)
jQuery Eventオブジェクトでくるむ必要はない。

@simdy simdy added this to the v1.1.12 milestone Jun 17, 2014

@simdy simdy added the enhancement label Jun 17, 2014

@simdy

This comment has been minimized.

Show comment
Hide comment
@simdy

simdy Jun 18, 2014

Member

非DOMオブジェクトについては、jQueryを使用せず、
add/removeEventListenerインターフェースを直接使ってイベントリスナを登録する。
従って、イベントオブジェクトのjQueryによるラッピングも行わない。

Member

simdy commented Jun 18, 2014

非DOMオブジェクトについては、jQueryを使用せず、
add/removeEventListenerインターフェースを直接使ってイベントリスナを登録する。
従って、イベントオブジェクトのjQueryによるラッピングも行わない。

fukudayasuo pushed a commit to hifive-labs/hifivemain that referenced this issue Jul 1, 2014

fukudayasuo
#353 ノードでないオブジェクトにイベントをバインドするときに、addEventListenerを使用するようにしました。
windowオブジェクトかどうか判定するisWindowObjectをh5scopeglobalに作成しました。

fukudayasuo pushed a commit to hifive-labs/hifivemain that referenced this issue Jul 1, 2014

fukudayasuo
#353 オブジェクト(!=ノード)にバインドした時に、イベントハンドラの第2引数をjQueryでくるまないようにしました。
オブジェクトにバインドした時の引数を確認するテストケースを追加しました。
既存のケースを修正しました。

fukudayasuo pushed a commit to hifive-labs/hifivemain that referenced this issue Jul 1, 2014

fukudayasuo
#353 bindされなかったbindObjをboundHandlersに入れないようにしました。
registerWithUnbindList→registerWithBoundHandlers にリネームしました。

@simdy simdy closed this Jul 1, 2014

@simdy simdy added the specchange label Jul 2, 2014

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment