You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
@@ -343,7 +343,7 @@ function findDroppable(event) {
343
343
returnnull;
344
344
}
345
345
346
-
returntarget.closest('.droppable');
346
+
returnelem.closest('.droppable');
347
347
}
348
348
```
349
349
@@ -376,9 +376,9 @@ var DragManager = new function() {
376
376
}
377
377
```
378
378
379
-
Всю работу будут выполнять обработчики `onMouse*`, которые оформлены как локальные функции. В данном случае они ставятся на `document` через `on...`, но это легко поменять это на `addEventListener`.
379
+
Всю работу будут выполнять обработчики `onMouse*`, которые оформлены как локальные функции. В данном случае они ставятся на `document` через `on...`, но это легко поменять на `addEventListener`.
380
380
381
-
Код функция`onMouse*` мы подробно рассмотрели ранее, но вы сможете увидеть их в полном примере ниже.
381
+
Код функции`onMouse*` мы подробно рассмотрели ранее, но вы сможете увидеть их в полном примере ниже.
382
382
383
383
Внутренний объект `dragObject` будет содержать информацию об объекте переноса.
384
384
@@ -396,7 +396,7 @@ var DragManager = new function() {
396
396
397
397
Задачей `DragManager` является общее управление переносом. Что же касается действий при его окончании -- их должен назначить внешний код, который использует `DragManager`.
398
398
399
-
Можно сделать это через вспомогательные методы `onDrag*`, которые устанавливаются внешним кодом и затем вызываются фреймворком. Разработчик, подключив `DragManager`, описывает в этих методах, что делать при начале и завершении переноса. Конечно же, можно заменить методы `onDrag*` на генерацию "своих" событий.
399
+
Можно сделать это через вспомогательные методы `onDrag*`, которые устанавливаются внешним кодом и затем вызываются фреймворком. Разработчик, подключив `DragManager`, описывает в этих методах, что делать при завершении или отмене переноса. Конечно же, можно заменить методы `onDrag*` на генерацию "своих" событий.
400
400
401
401
С использованием `DragManager` пример, с которого начиналась эта глава -- перенос иконок браузеров в компьютер, реализуется совсем просто:
<li>При `mousemove` инициировать перенос, как только зажатый элемент передвинули на 3 пикселя или больше. Сообщить во внешний код вызовом `onDragStart`.</li>
517
+
<li>При `mousemove` инициировать перенос, как только зажатый элемент передвинули на 3 пикселя или больше. Сообщить во внешний код вызовом `onDragStart`. При этом:</li>
518
518
<ol>
519
-
<li>Создать аватар, если можно начать перенос с этой точки `draggable`.</li>
520
-
<li>Перемещать его по экрану, новые координаты ставить по`e.pageX/pageY` с учетом изначального сдвига элемента относительно курсора.</li>
521
-
<li>Сообщать во внешний код о текущем `droppable` под курсором и позиции над ним вызовами `onDragEnter`, `onDragMove`, `onDragLeave`.</li>
519
+
<li>Создать аватар, если можно начать перенос элемента `draggable` с данной позиции курсора.</li>
520
+
<li>Переместить аватар по экрану, установив его новую позицию из`e.pageX/pageY` с учетом изначального сдвига элемента относительно курсора.</li>
521
+
<li>Сообщить во внешний код о текущем `droppable` под курсором и позиции над ним вызовами `onDragEnter`, `onDragMove`, `onDragLeave`.</li>
522
522
</ol>
523
523
</li>
524
524
<li>При `mouseup` обработать завершение переноса. Элемент под аватаром получить по координатам, предварительно спрятав аватар. Сообщить во внешний код вызовом `onDragEnd`.</li>
0 commit comments