[jquery][зарядка для ума] время между наведением и кликом по ссылке

dig555

Постоялец
Регистрация
22 Июн 2007
Сообщения
365
Реакции
160
Народ! Вышел тут спор относительно размера (физического) анкора и местоположения ссылок на сайте. Нужно выяснить одну вещь применительно к конкретным ссылкам, конкретного сайта. Обратите внимание, что когда вы кликаете по ссылкам, сам клик представляет собой два действия (наведение на ссылку и собственно клик). Стоит задача узнать значение среднего промежутка времени между этими двумя действиями (полагаю - десятые секунды) на конкретном сайте.

Задачка:

Есть ссылка <a href="Для просмотра ссылки Войди или Зарегистрируйся" id="gourl">Ссылка</a>
При наведении ( hover) мыши на ссылку ('#gourl') нужно запустить таймер,
а при нажатии (click) его остановить. Сколько натикало и нужно узнать. Это значение нужно передать в POST запросе скрипту count.php. В нём будет обработчик поступающей информации (сохранение, вычисление среднего значения).

Помогите JQuery скриптом. К фрилансерам с такой задачкой идти в лом, а у самого что-то не получается ни с таймером, ни с AJAX.
 
Зачем таймер то запускать? Метка времени при наведении на ссылку - метка времени при клике = искомая разница... Остальное дело техники...
 
Зачем таймер то запускать? Метка времени при наведении на ссылку - метка времени при клике = искомая разница... Остальное дело техники...
Ок. Как получить метку времени? Или имеется в виду - 1). навели - отправили запрос 2). кликнули - отправили запрос. Скрипт-обработчик, на основании этих данных и выдаст нужное? Или как?
 
можно прямо в JS получить метки времени
Код:
time = new Date();
var time1 = time.getTime(); // onHover
var time2 = time.getTime(); //onClick
вот как-то приблизительно так
 
HTML:
<!DOCTYPE html>
<html>
    <head>
        <title>Some kind of a test page which was created by not exactly sober programmer in a depressed mood and for a search of the truth</title>
     
        <script src="js/jquery.js" type="text/javascript"></script>
        <script type="text/javascript">
            var time_holder = 0;
         
            $(document).ready(function () {
             
                /**
                * Линк в фокусе
                */
                $('#my_anchor').mouseover(function () {
                    time_holder = new Date().getTime();
                });
             
                /**
                * Линк вне фокуса
                */
                $('#my_anchor').mouseout(function () {
                    time_holder = 0;
                });
             
                $('#my_anchor').click(function () {
                    time_holder = new Date().getTime() - time_holder;
                 
                    /**
                    * Если вылетит ошибка - юзверь все ровно попадет на нужную страницу, ибо
                    * в данном методе вылет exception или false - недопустимы(так как блокируют переход).
                    */
                    try {
                        $.ajax({
                            type: 'POST',
                            url: 'http://some-domain.com/count.php',
                            data: 'delay=' + time_holder,
                            success: function(){
                                /**
                                * В принципе, на сколько я понимаю задачу, тут пофиг на возвращаемый результат. Все ровно
                                * браузер по всей видимости уже успеет редиректнуться.
                                */
                                return;
                            }
                        });
                    } catch (e) { }
                 
                    time_holder = 0;
                    return;
                });
            });
        </script>
    </head>
    <body>
        <a href="http://nulled.cc" id="my_anchor">I Like Nulled!</a>
    </body>
</html>
Так не вариант?
 
Да, правда, результат будет в миллисекундах.
 
Для просмотра ссылки Войди или Зарегистрируйся. Огромное спасибо. Судя по коду - то, что нужно. Сейчас обработчик сделаю и проверю. (А кстати, если после
time_holder = new Date().getTime() - time_holder;
alert(time_holder); воткнуть то показывать будет время?
Или в JS нужно как-то var в string переводить?
 
Код:
alert('> ' + time_holder);
Это самый простой "перевод". Да, следует учесть, что данный пример работает только для левой кнопки мыши. Для остальных - по необходимости дописать...
 
Для примера обработчик наведения на ссылку и момента нажатия на ссылку (при желании можно еще и момент когда отпустили кнопку мышки отследить) с алертом всех событий:
Код:
<script language="javascript">
$(function(){
$("a").mouseover(function(){
window.overtime= new Date().getTime();
alert(overtime);
}).mousedown(function(){
var downtime= new Date().getTime();
var r= downtime-overtime;
alert(downtime+"-"+overtime+"="+r);
});
});
</script>
</head>
<body>
<a href='#' >ssylka</a>
</body>
 
Назад
Сверху