* [CODE(DOMa)@en[target]] 属性 (DOM)

[4] [CODE(DOMi)@en[[[Event]]]] [[オブジェクト]]の [DFN[[CODE(DOMa)@en[[[target]]]]]]
[[属性]]は、[[事象]]が[[発火]]された対象である[[オブジェクト]]を表します。

* ev:listener 要素 target 属性, ev:target 属性 (XML 事象)

[2] [[XML事象]]の [DFN[[CODE(XMLa)[target]] 属性]]
<http://www.w3.org/TR/xml-events#attr-listener-target>
は、[[事象聴取器]]の[[対象要素]]を指定します。
この属性の値の型は [CODE(XML)[[[IDREF]]]] です。

この属性が指定されていなければ、
[[観察者]]要素自身とその[[子孫要素]]で発生した[[事象]]がその事象聴取器によって処理されることになります。
しかし、この属性が指定されている時には、
[[識別子]]が一致した場合に限って処理します。

この性質から、対象要素は観察者要素自身かその子孫要素であるべきです。
そうでないと意味がありません。

[3] たとえば、
[PRE(XML)[
<object id="o1">
  <object id="o2">
    <object id="o3"/>
    <object id="o4"/>
  </object>
  <object id="o5"/>
</object>
<onevent ev:event="load" ev:observer="o1"
         ev:target="o2">
  ...
</onevent>
]PRE]

では、 [SAMP(XMLe)[onevent]] 要素は、
[SAMP[o2]] の物体が読み込まれた時にのみ処理されます。
(もし [CODE(XMLa)[target]] 属性がなければ、
[SAMP[o1]]〜[SAMP[o5]] のいずれの要素の物体が読み込まれた時にも処理されます。)

一見使い道があるのか疑問に思えますが、
処理される事象は対象要素のそのものについてだけであり、
子孫要素である [SAMP[o3]] や [SAMP[o4]] の事象も処理されません。
ですから、たとえば、
[PRE(XML)[
<image id="image">
  <area id="area1"/>
  <area id="area2"/>
  <ev:listener event="click" target="area1"/>
  <ev:listener event="click" target="area2"/>
  <ev:listener event="click"/><!-- 範囲外 -->
</image>
]PRE]

のような使い方ができるでしょう。

