ru.javascript.info
ru.javascript.info copied to clipboard
вопросы по задаче№2 "Умная подсказка"
Здравствуйте, в авторском решении задачи№2 "Умная подсказка" в разделе: "Интерфейсные события", тема: "Движение мыши: mouseover/out, mouseenter/leave" по-моему есть ряд неточностей, которые сбивают меня с толку как начинающего изучать программирование. А именно:
- В функции trackSpeed() {}, есть строка: this.over.call(this.elem, event); т.е. функция over(){}, вызывается в контексте elem, но в функции over(){} не используются переменные с this и соответственно вызов this.over() работает с тем же успехом, что и вызов this.over.call(this.elem, event);. Да и причем тут контекст this.elem, ведь у elem нет свойств, которые могли бы использоваться в функции over(){}. Более понятен был бы контекст созданного объекта вызовом new HoverIntent();
- В обработчике onMouseOut(event){} есть проверка if (!event.relatedTarget ||...В чем смысл этой проверки? Ведь во-первых провеки: if ( !elem.contains(event.relatedTarget)) достаточно, а во-вторых event.relatedTarget всегда вернет true, даже когда курсор сходит на html(т.е. на document.documentElement);
- Для чего нужны переменные this.prevTime и this.lastTime, т.е. для чего наv нужно знать стоял курсор или нет? Нам просто нужно знать скорость за прошедшие 100ms и если она меньше 0,1(а 0<0.1) срабатывает over(){} и подсказка всплывает. Я хочу сказать, что случай остановки курсора(скорость 0) и так прекрасно обрабатывается проверкой: if (speed < this.sensitivity) . Если я обратился не по адресу, подскажите пожалуйста как получить ответы на эти вопросы.