Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

EventDispacherの仕様の互換性・相互運用性向上 #302

Closed
simdy opened this issue May 2, 2014 · 1 comment
Closed

EventDispacherの仕様の互換性・相互運用性向上 #302

simdy opened this issue May 2, 2014 · 1 comment
Assignees
Labels
Milestone

Comments

@simdy
Copy link
Member

@simdy simdy commented May 2, 2014

・基本的な考え方:DOM Level 3のサブセットとする。
 ・DOMイベントではないので、プロパゲーションに関係するプロパティなどは不要とする
 ・必要に応じてDOM Level 3に存在しないAPIを追加することは可とする

・利便性のため、dispatchEvent()は任意のオブジェクトを引数として受け取れることとする。
 ただし、その場合、自動的に特定のプロパティを付加する。

付加するプロパティ:

  • target (=== dispatchEventのthis)
  • timeStamp (=== dispatchEvent呼び出し時の時刻(new Date().getTime()))

また、以下を行う:

  • isDefaultPrevented()
  • isImmediatePropagationStopped()

があるか、存在をチェックし、なければ、それぞれ

  • preventDefault()(とisDefaultPrevented)
  • stopImmediatePropagation()(とisImmediate~~)

を付加する。(付加するかどうかの判定は独立に行う。)
これは、jQuery Eventオブジェクトとの互換性対策、かつ内部的な制御機構との整合をとるため。

なお、ほとんどのケースは以下の2パターンと想定される:
①jQuery Eventが渡された場合⇒上記のisXxxは両方とも存在する(かつ、preventもstopもある)ので問題ない。
②ただのオブジェクトが渡された場合⇒isXxxとprevent,stopの4メソッドを全て追加するので、やはり問題ない。

isXxxがあるのにそれに対応するフラグセットのメソッドがない場合、
ユーザーが独自にフラグをセットする手段を持たせていると考え、prevent/stopの各メソッドは付加(&上書き)しないこととする。

@simdy simdy added this to the v1.1.10 milestone May 2, 2014
@simdy simdy added the enhancement label May 2, 2014
@simdy
Copy link
Member Author

@simdy simdy commented May 2, 2014

また、dispatchEvent()を行った場合、その間にadd/removeEventListenerを行っても、その変更は反映されない(次回のdispatch時から反映される)。つまり、dispatchEvent()を呼んだ瞬間に、どのリスナーが呼ばれるかは確定することとする。
この挙動は、DOM Events仕様と同じである。

fukudayasuo pushed a commit to hifive-labs/hifivemain that referenced this issue May 2, 2014
* target
* timeStamp
* isDefaultPrevented()
* preventDefault()
* isImmediatePropagationStopped()
* stopImmediatePropagation()

dispachEventが呼んだ瞬間のリスナが実行されるようにしました。
fukudayasuo pushed a commit to hifive-labs/hifivemain that referenced this issue May 2, 2014
@simdy simdy closed this May 2, 2014
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Linked pull requests

Successfully merging a pull request may close this issue.

None yet
2 participants
You can’t perform that action at this time.