aboutsummaryrefslogtreecommitdiff
path: root/files/ru/web/api/event/comparison_of_event_targets/index.html
diff options
context:
space:
mode:
Diffstat (limited to 'files/ru/web/api/event/comparison_of_event_targets/index.html')
-rw-r--r--files/ru/web/api/event/comparison_of_event_targets/index.html164
1 files changed, 164 insertions, 0 deletions
diff --git a/files/ru/web/api/event/comparison_of_event_targets/index.html b/files/ru/web/api/event/comparison_of_event_targets/index.html
new file mode 100644
index 0000000000..0c05e9118f
--- /dev/null
+++ b/files/ru/web/api/event/comparison_of_event_targets/index.html
@@ -0,0 +1,164 @@
+---
+title: Сравнение разных Event Targets
+slug: Web/API/Event/Comparison_of_Event_Targets
+translation_of: Web/API/Event/Comparison_of_Event_Targets
+---
+<p>{{ ApiRef() }}</p>
+
+<h3 id="Event_targets" name="Event_targets">Event targets</h3>
+
+<p>Легко запутаться в том, какую цель (target) следует изучить при написании обработчика событий. В этой статье разъяснено использование свойств target.</p>
+
+<p>Существуют 5 целей для рассмотрения:</p>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Property</th>
+ <th>Defined in</th>
+ <th>Purpose</th>
+ </tr>
+ <tr>
+ <td><a href="/en/DOM/event.target" title="en/DOM/event.target">event.target</a></td>
+ <td><a class="external" href="http://www.w3.org/TR/DOM-Level-2/events.html#Events-interface">DOM Event Interface</a></td>
+ <td>
+ <p>Элемент DOM слева от вызова этого события, например:</p>
+
+ <pre class="eval">
+<em>element</em>.dispatchEvent(<em>event</em>)
+</pre>
+ </td>
+ </tr>
+ <tr>
+ <td><a href="/en/DOM/event.currentTarget" title="en/DOM/event.currentTarget">event.currentTarget</a></td>
+ <td><a class="external" href="https://www.w3.org/TR/DOM-Level-2/events.html#Events-interface">DOM Event Interface</a></td>
+ <td><a class="external" href="http://www.w3.org/TR/DOM-Level-2/events.html#Events-EventTarget"><code>EventTarget</code></a>, чьи <a class="external" href="http://www.w3.org/TR/DOM-Level-2/events.html#Events-EventListener"><code>EventListeners</code></a> в настоящее время обрабатываются. По мере того, как происходит захват и всплытие событий, это значение изменяется.</td>
+ </tr>
+ <tr>
+ <td><a href="/en/DOM/event.relatedTarget" title="en/DOM/event.relatedTarget">event.relatedTarget</a></td>
+ <td><a class="external" href="http://www.w3.org/TR/DOM-Level-2/events.html#Events-MouseEvent">DOM MouseEvent Interface</a></td>
+ <td>Определяет вторичную цель для события.</td>
+ </tr>
+ <tr>
+ <td><a href="/en/DOM/event.explicitOriginalTarget" title="en/DOM/event.explicitOriginalTarget">event.explicitOriginalTarget</a></td>
+ <td>{{ Source("/dom/public/idl/events/nsIDOMNSEvent.idl", "nsIDOMNSEvent.idl") }}</td>
+ <td>{{ Non-standard_inline() }} Если по какой-либо причине событие было перенацелено, кроме анонимного пересечения границ, событие будет установлено на цель до перенацеливания. Например, события мыши перенацеливаются на их родительский узел, когда они встречаются над текстовыми узлами ({{Bug ("185889")}}), и в этом случае <code>.target</code> покажет на родителя и <code>.explicitOriginalTarget</code> покажет на текстовый узел.<br>
+ В отличие от <code>.originalTarget</code> — <code>.explicitOriginalTarget</code> никогда не будет содержать анонимный контент.</td>
+ </tr>
+ <tr>
+ <td><a href="/en/DOM/event.originalTarget" title="en/DOM/event.originalTarget">event.originalTarget</a></td>
+ <td>{{ Source("/dom/public/idl/events/nsIDOMNSEvent.idl", "nsIDOMNSEvent.idl") }}</td>
+ <td>{{ Non-standard_inline() }} Первоначальная цель события перед любым перенацеливанием. Подробнее см. <a href="/en-US/docs/XBL/XBL_1.0_Reference/Anonymous_Content#Event_Flow_and_Targeting" title="en/XBL/XBL_1.0_Reference/Anonymous_Content#Event_Flow_and_Targeting">Анонимный контент#Event_Flow_and_Targeting</a>.</td>
+ </tr>
+ </tbody>
+</table>
+
+<h3 id="Use_of_explicitOriginalTarget_and_originalTarget" name="Use_of_explicitOriginalTarget_and_originalTarget">Использование <code>explicitOriginalTarget</code> и <code>originalTarget</code></h3>
+
+<p>TODO: Only available in a Mozilla-based browser? TODO: Only suitable for extension-developers?</p>
+
+<h3 id="Examples" name="Examples">Примеры</h3>
+
+<pre>&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+&lt;head&gt;
+    &lt;meta charset="utf-8"&gt;
+    &lt;meta http-equiv="X-UA-Compatible" content="IE=edge"&gt;
+    &lt;title&gt;Comparison of Event Targets&lt;/title&gt;
+    &lt;style&gt;
+        table {
+            border-collapse: collapse;
+            height: 150px;
+            width: 100%;
+        }
+        td {
+            border: 1px solid #ccc;
+            font-weight: bold;
+            padding: 5px;
+            min-height: 30px;
+        }
+        .standard {
+            background-color: #99ff99;
+        }
+        .non-standard {
+            background-color: #902D37;
+        }
+    &lt;/style&gt;
+&lt;/head&gt;
+&lt;body&gt;
+    &lt;table&gt;
+    &lt;thead&gt;
+        &lt;tr&gt;
+            &lt;td class="standard"&gt;Изначальная цель, отправляющая событие &lt;small&gt;event.target&lt;/small&gt;&lt;/td&gt;
+            &lt;td class="standard"&gt;Цель, кто прослушивает события &lt;small&gt;event.currentTarget&lt;/small&gt;&lt;/td&gt;
+            &lt;td class="standard"&gt;Идентифицировать другой элемент (если он есть), участвующий в событии &lt;small&gt;event.relatedTarget&lt;/small&gt;&lt;/td&gt;
+            &lt;td class="non-standard"&gt;Если по какой-то причине произошло перенацеливание события &lt;small&gt;event.explicitOriginalTarget&lt;/small&gt; содержит цель перед перенацеливанием (никогда не содержит анонимных целей)&lt;/td&gt;
+            &lt;td class="non-standard"&gt;Если по какой-то причине произошло перенацеливание события &lt;small&gt;event.originalTarget&lt;/small&gt; содержит цель перед перенацеливанием (может содержать анонимные цели)&lt;/td&gt;
+        &lt;/tr&gt;
+    &lt;/thead&gt;
+    &lt;tr&gt;
+        &lt;td id="target"&gt;&lt;/td&gt;
+        &lt;td id="currentTarget"&gt;&lt;/td&gt;
+        &lt;td id="relatedTarget"&gt;&lt;/td&gt;
+        &lt;td id="explicitOriginalTarget"&gt;&lt;/td&gt;
+        &lt;td id="originalTarget"&gt;&lt;/td&gt;
+    &lt;/tr&gt;
+&lt;/table&gt;
+&lt;p&gt;Нажав на текст, вы увидите разницу между explicitOriginalTarget, originalTarget и target&lt;/p&gt;
+&lt;script&gt;
+    function handleClicks(e) {
+        document.getElementById('target').innerHTML = e.target;
+        document.getElementById('currentTarget').innerHTML = e.currentTarget;
+        document.getElementById('relatedTarget').innerHTML = e.relatedTarget;
+        document.getElementById('explicitOriginalTarget').innerHTML = e.explicitOriginalTarget;
+        document.getElementById('originalTarget').innerHTML = e.originalTarget;
+    }
+
+    function handleMouseover(e) {
+        document.getElementById('target').innerHTML = e.target;
+        document.getElementById('relatedTarget').innerHTML = e.relatedTarget;
+    }
+
+    document.addEventListener('click', handleClicks, false);
+    document.addEventListener('mouseover', handleMouseover, false);
+&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;</pre>
+
+<h3 id="Use_of_target_and_relatedTarget" name="Use_of_target_and_relatedTarget">Использование <code>target</code> и <code>relatedTarget</code></h3>
+
+<p>Свойство <code>relatedTarget</code> для события <code>mouseover</code> содержит узел, над которым ранее была указана мышь. Для события <code>mouseout</code> он удерживает узел, к которому движется мышь.</p>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Тип события</th>
+ <th><a href="/en/DOM/event.target" title="en/DOM/event.target">event.target</a></th>
+ <th><a href="/en/DOM/event.relatedTarget" title="en/DOM/event.relatedTarget">event.relatedTarget</a></th>
+ </tr>
+ <tr>
+ <td><code>mouseover</code></td>
+ <td>EventTarget, в который входим указателем</td>
+ <td>EventTarget, из которого выходим указателем</td>
+ </tr>
+ <tr>
+ <td><code>mouseout</code></td>
+ <td>EventTarget, из которого выходим указателем</td>
+ <td>EventTarget, в который входим указателем</td>
+ </tr>
+ </tbody>
+</table>
+
+<p>TODO: Также требуется описание событий <code>dragenter</code> и <code>dragexit</code>.</p>
+
+<h4 id="Example" name="Example">Пример</h4>
+
+<pre class="eval">&lt;hbox id="outer"&gt;
+ &lt;hbox id="inner"
+ onmouseover="dump('mouseover ' + event.relatedTarget.id + ' &gt; ' + event.target.id + '\n');"
+ onmouseout="dump('mouseout ' + event.target.id + ' &gt; ' + event.relatedTarget.id + '\n');"
+ style="margin: 100px; border: 10px solid black; width: 100px; height: 100px;" /&gt;
+&lt;/hbox&gt;
+</pre>
+
+<p> </p>