addEventListenerに指定した無名関数をremoveEventListenerしたいばあい、event.currentTarget.removeEventListener(event.type, arguments.callee)ってやればいいことに気付いた
2010-10-18 23:51:46@edvakf event.targetでは、eventの発生要素になってしまって、event発生要素の先祖要素にイベントリスナを設定した時に使えなくなりませんか?
2010-10-19 09:51:47@saneyuki_s addEventListener した要素でしか removeEventListener できないので、target だったら必ずそうなりますが currentTarget ではそうならないんじゃないでしょうか。なんか自信なくなってきた。
2010-10-19 10:13:31@edvakf ページ中にbutton(と呼ぶ要素)がある状態で、windowにaddEventListener("click", 匿名関数)した(このリスナをAと呼ぶ)場合。
2010-10-19 10:21:08@edvakf buttonをクリックしてイベント発生させると、いずれAが呼ばれますけれども、event.targetはbuttonとなるので、event.target.removeEventListenerでは結局windowからはremoveできないような
2010-10-19 10:21:23@saneyuki_s 勘違いしてたかも。その場合 target は常に window なのだと思っていました。仕様読んできます。
2010-10-19 10:24:08Event.target は dispatchEventを実行した要素になるのかな。currentTargetはeventListenしている要素、originalTarget は? explicitOriginalTarget は? このあたりきちんと勉強しないと
2010-10-19 10:24:43target: Used to indicate the EventTarget to which the event was originally dispatched. http://j.mp/cX68ti なのでバブリングの最深部ということか。
2010-10-19 10:28:13currentTarget は EventListener が実行されてる要素なので currentTarget.removeEventListener で十分なのか。たぶん。
2010-10-19 10:31:03Event.originalTarget はMozilla独自だった...orz https://developer.mozilla.org/en/DOM/event.originalTarget
2010-10-19 10:31:30