JavaScript. Подробное руководство, 6-е издание
Шрифт:
// за границы совпадает с количеством входов, следует снять подсветку списка entered--;
if ((to && !ischild(to,list)) || entered <= 0) {
list.className = original_class;
entered = 0;
}
return false;
}
// Этот обработчик вызывается, когда происходит сброс объекта.
// Он извлекает сброшенный текст и превращает его в новый элемент <li>
list.ondrop = function(e) {
е = е И window.event; // Получить объект события
// Получить сброшенные данные в текстовом формате.
// "Text" - это псевдоним для "text/plain".
// IE не поддерживает "text/plain”, поэтому здесь используется "Text".
var dt = e.dataTransfer; // объект dataTransfer
var text = dt.getData("Text"); // Получить данные в текстовом формате.
// Если был получен некоторый текст, превратить его в новый элемент
// списка и добавить в конец,
if (text) {
var item = document.createElement("li"); // Создать новый <li>
item.draggable = true; // Сделать буксируемым
item.appendChild(document.createTextNode(text)); // Добавить текст
list.appendChild(item); // Добавить в список
// Восстановить первоначальный стиль списка и сбросить счетчик entered
list.className = original_class;
entered = 0;
return false;
}
};
// Сделать все элементы списка буксируемыми
var items = list.getElementsByTagName("li");
for(var і = 0; і < items.length; i++) items[i].draggable = true;
// И зарегистрировать обработчики для поддержки буксировки элементов списка.
// Обратите внимание, что мы поместили эти обработчики в список и ожидаем,
// что события будут всплывать вверх от элементов списка.
// Этот обработчик вызывается, когда буксировка начинается внутри списка,
list.ondragstart = function(e) {
var е = е || window.event;
var target = e.target || e.srcElement;
// Если всплыло событие от элемента, отличного от <li>, игнорировать его
if (target.tagName !== "li") return false;
// Получить важный объект dataTransfer
var dt = e.dataTransfer;
// Сохранить данные и указать информацию об их формате
dt.setData("Text", target.innerText || target.textContent);
// Сообщить, что поддерживаются операции копирования и перемещения
dt.effectAllowed = "copyMove";
};
// Этот обработчик вызывается после успешного сброса
list.ondragend = function(e) {
е = е || window.event;
var target = e.target || e.srcElement;
// Если выполнялась операция перемещения, удалить элемент списка.
// В IE8 это свойство будет иметь значение "none", если явно
// не установить его в значение "move" в обработчике ondrop выше.
// Но принудительная установка в значение "move" для IE будет
// препятствовать другим броузерам дать пользователю возможность
// выбирать между операцияим перемещения и копирования,
if (e.dataTransfer.dropEffect === "move") target.parentNode.removeChild(target);
Поделиться:
Популярные книги
Я все еще барон
4. Дорогой барон!
Фантастика:
боевая фантастика
5.00
рейтинг книги
Хозяин Теней 2
2. Безбожник
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Уникум
1. Уникум
Фантастика:
альтернативная история
4.60
рейтинг книги
Боярышня Дуняша 2
2. Боярышня
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Сильнейший Столп Империи. Книга 3
3. Сильнейший Столп Империи
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Белый Волк
2. Викинг
Приключения:
исторические приключения
9.12
рейтинг книги
Эволюционер из трущоб. Том 5
5. Эволюционер из трущоб
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Конец детства (сборник)
Фантастика:
научная фантастика
7.00
рейтинг книги
Властелин Севера
3. Саксонские хроники
Приключения:
исторические приключения
8.67
рейтинг книги
Двойник Короля 5
5. Двойник Короля
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Старый, но крепкий 7
7. Культивация без насилия
Фантастика:
рпг
уся
фэнтези
5.00
рейтинг книги
Газлайтер. Том 5
5. История Телепата
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Матабар VIII
8. Матабар
Проза:
магический реализм
5.00
рейтинг книги
Агенты ВКС
3. Фронтир
Фантастика:
боевая фантастика
космическая фантастика
5.00