скрипт всплывающей подсказки
Всем привет!
Помогите разобраться :) изучаю книгу Дэвида Флэнагана, и дошел до темы событий. Что то очень тяжело она мне дается. Есть такой скрипт из книжки <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <script> // Следующие значения используются методом schedule(), определенным далее. // Они используются как константы, но доступны для записи, поэтому вы можете // переопределить эти значения, предлагаемые по умолчанию. Tooltip.X_OFFSET = 25; // пикселов вправо от указателя мыши Tooltip.Y_OFFSET = 15; // пикселов вниз от указателя мыши Tooltip.DELAY = 50; // миллисекунд после события mouseover /** * Данный метод планирует появление всплывающей подсказки над указанным * элементом через Tooltip.DELAY миллисекунд от момента события. * Аргумент “e” должен быть объектом события mouseover. Данный метод извлекает * координаты мыши из объекта события, преобразует их из оконных координат * в координаты документа и добавляет вышеуказанные смещения. * Определяет текст подсказки, обращаясь к атрибуту "tooltip" заданного * элемента. Данный метод автоматически регистрирует обработчик события * onmouseout и отменяет его регистрацию. Этот обработчик выполняет скрытие * подсказки или отменяет ее запланированное появление. */ Tooltip.prototype.schedule = function(target, e) { // Получить текст для отображения. Если текст отсутствует - ничего не делать. var text = target.getAttribute("tooltip"); if (!text) return; // Объект события хранит оконные координаты указателя мыши. // Поэтому они преобразуются в координаты документа с помощью модуля Geometry. var x = e.clientX + Geometry.getHorizontalScroll(); var y = e.clientY + Geometry.getVerticalScroll(); // Добавить смещения, чтобы подсказка появилась правее и ниже указателя мыши. x += Tooltip.X_OFFSET; y += Tooltip.Y_OFFSET; // Запланировать появление подсказки. var self = this; // Это необходимо для вложенных функций var timer = window.setTimeout(function() { self.show(text, x, y); }, Tooltip.DELAY); // Зарегистрировать обработчик onmouseout, чтобы скрыть подсказку // или отменить появление запланированной подсказки. if (target.addEventListener) target.addEventListener("mouseout", mouseout, false); else if (target.attachEvent) target.attachEvent("onmouseout", mouseout); else target.onmouseout = mouseout; // Реализация слушателя события приводится далее function mouseout() { self.hide(); // Скрыть подсказку, если она уже на экране, window.clearTimeout(timer); // отменить все запланированные подсказки // и удалить себя, т.к. обработчик запускается единожды if (target.removeEventListener) target.removeEventListener("mouseout", mouseout, false); else if (target.detachEvent) target.detachEvent("onmouseout",mouseout); else target.onmouseout = null; } } // Определить единственный глобальный объект Tooltip для общего пользования Tooltip.tooltip = new Tooltip(); /* * Следующая статическая версия метода schedule() использует * глобальный объект tooltip * Используется метод следующим образом: * * <a href="www.davidflanagan.com" tooltip="good Java/JavaScript blog" * onmouseover="Tooltip.schedule(this, event)">David Flanagan's blog</a> */ Tooltip.schedule = function(target, e) {Tooltip.tooltip.schedule(target, e); } </script> </head> <body> <a href="www.davidflanagan.com" tooltip="good Java/JavaScript blog" onmouseover="Tooltip.schedule(this, event)">David Flanagan's blog</a> </body> Который не работает. Главное в самом начале скрипта выдает ошибку то что объект Tooltip не определен, так как зачем то мы определяем его свойства до определения самого объекта (Tooltip.X_OFFSET = 25). Дальше вообще темный лес! |
Часовой пояс GMT +3, время: 08:05. |