Шрифт:
if ((from && !ischild(from, list)) || entered == 1) {
// Вся информация о буксируемом объекте находится в объекте dataTransfer
var dt = е.dataTransfer;
// Объект dt.types содержит список типов, или форматов, в которых доступны
// буксируемые данные. Спецификация HTML5 требует, чтобы свойство types имело
// метод contains. В некоторых броузерах это свойство является массивом
// с методом indexOf. В IE версии 8 и ниже оно просто отсутствует,
var types = dt.types; // В каких форматах доступны данные
// Если информация о типах отсутствует или данные доступны в простом
// текстовом формате, подсветить список, чтобы показать пользователю, что он
// готов принять данные, и вернуть false, чтобы известить о том же и броузер,
if (!types || //IE
(types.contains && types.contains("text/plain")) || //HTML5
(types.indexOf && types.indexOf("text/plain")!=-1)) //Webkit
{
list.className = original_class + " droppable";
return false;
}
// Если тип данных не поддерживается, мы не сможем принять их return;
// без отмены
}
return false; // Если это не первое вхождение, мы по-прежнему готовы
};
// Этот обработчик вызывается в ходе буксировки объекта над списком.
// Этот обработчик должен быть определен, и он должен возвращать false,
// иначе сброс объектов будет невозможен,
list.ondragover = function(e) { return false; };
// Этот обработчик вызывается, когда буксируемый объект выходит за границы списка
// или за границы одного из его дочерних элементов. Если объект действительно
// покидает границы списка (а не границы одного из его элементов),
// то нужно снять подсветку списка,
list.ondragleave = function(e) {
е = е || window.event;
var to = e.relatedTarget;
// Если буксируемый объект покидает границы списка или если количество выходов
// за границы совпадает с количеством входов, следует снять подсветку списка entered--;
if ((to && !ischild(to,list)) || entered <= 0) {
list.className = original_class;
entered = 0;
}
return false;
}
// Этот обработчик вызывается, когда происходит сброс объекта.
// Он извлекает сброшенный текст и превращает его в новый элемент <li>
list.ondrop = function(e) {
е = е И window.event; // Получить объект события
// Получить сброшенные данные в текстовом формате.