Повторный клик по ссылке через время
Подскажите, как реализовать скрипт, который запретит часто нажимать на ссылку, точнее запретит на время. Если быть совсем точным, то человек после нажатия ссылки повторно сможет нажать только через час, например:D
|
Мне подсказали в чате код, но я толком не смог разобраться:
onclick="var a = this.href, t = this; t.href ='#'; setTimeout(function() { t.href = a }, 1000)" Хотелось бы на примере посмотреть |
При клике по ссылке запоминаешь время в localStorage. При последующем клике сначала проверяешь сколько времени прошло, и в случае чего предотвращаешь переход по ссылке.
|
а можно на примере показать?
|
Цитата:
Вот мой вариант <!DOCTYPE html> <html> <head> <script src="http://code.jquery.com/jquery-latest.js"></script> <!-- <link rel="stylesheet" type="text/css" href="tmp.css" /> --> <style type="text/css"> </style> <script type="text/javascript"> $(document).ready(function (){ $('a').click(function (){ var o=$(this); if (o.data('on')==0) { alert('Действие приостановлено'); return }; alert('Действие выполнено'); o.data('on',0); setTimeout(function (){ o.data('on',1); },3000); }); }); </script> </head> <body> <a href='#' data-on='1'>test</a> </body> </html> |
Я думал под ссылкой подразумевается ссылка, а не кнопка. Почему люди не хотят называть вещи своими именами?
<a href="#">Ссыль</a> <script> var delay = 1000 * 2; // 2с var link = document.querySelector('a'); link.onclick = function() { var lastTime = +localStorage.lastTime; var nowTime = +new Date(); if (lastTime && (lastTime + delay > nowTime)) { alert ('Низя!'); return false; } else { localStorage.lastTime = nowTime; } } </script> |
Цитата:
|
danik.js,
неплохая идея)) |
а вот ещё вопрос, этот скрипт будет сразу для всех выполняться или для каждого персонально?
|
Цитата:
В примере присваивается всем элементам "a"... |
Опробовал, не открывает ссылку.. да и не выдаёт сообщение..
|
Цитата:
Что делаешь именно ты - я х/з... :) |
я вот этот опробовал:
<a href="#">http://www.yandex.ru/</a> <script> var delay = 1000 * 10; // 10с var link = document.querySelector('a'); link.onclick = function() { var lastTime = +localStorage.lastTime; var nowTime = +new Date(); if (lastTime && (lastTime + delay > nowTime)) { alert ('Низя!'); return false; } else { localStorage.lastTime = nowTime; } } </script> |
Цитата:
Где полный тестовый пример? У меня-то он есть - там все работает. |
просто на страницу вставил.. (
|
Tolys, если у тебя именно ссылка, по которой будет переход на другую страницу - как ты потом ту ссылку увидишь? Ведь ты уже на другой странице и там той ссылки нет.
|
ksa,
твой скрипт хороший, но там на test можно нажимать подряд. А мне хотелось бы, чтобы после того, как я раз нажму на ссылку, при повторной попытке у меня не вышло бы, текст какой-нибудь предупреждающий вылез.. |
ksa,
а если сделать, чтобы ссылка открывалась в новом окне? |
Цитата:
Цитата:
Ты остался на странице... Вся информация по нажатию там... |
Цитата:
|
Цитата:
<!DOCTYPE html> <html> <head> <script src="http://code.jquery.com/jquery-latest.js"></script> <!-- <link rel="stylesheet" type="text/css" href="tmp.css" /> --> <style type="text/css"> </style> <script type="text/javascript"> $(document).ready(function (){ $('a').click(function (){ var o=$(this); if (o.data('on')==0) { alert('Переход по ссылке пока не работает...'); return }; o.data('on',0); setTimeout(function (){ o.data('on',1); },5000); window.open(o.data('url'),''); }); }); </script> </head> <body> <a href='#' data-on='1' data-url='http://www.yandex.ru'>test</a> </body> </html> |
блин, уже не знаю, что не так делаю... уже просто копирую и вставляю и не работает... При нажатии не открывает ссылку
|
Тут на сайте всё отлично работает.. прям как надо..
|
Цитата:
|
хех)) а ведь и правда работает))
|
+ в зачёт форуму))
|
ksa,
единственный момент, который подкорректировать бы..)) при переходе в другой раздел сайта, помимо открытия этого раздела, в новом окне открывается главная страница) не подскажите, как ликвидировать это?) |
Цитата:
|
:D ну вот есть разделы: Главная страница, форум, информация и test. Заходим на страницу test, пробуем ссылку. Сначала по ссылке проходим, потом запрещается переход. Ага, думаем, пойдём на форум. Открываем раздел, а в новом окне загружается ещё главная страница.)
|
JS может что-то "помнить" только на странице...
Если нужно что-то "помнить вообще", пусть даже некоторое время... :) Нужно использовать некие "внешние" носители. Например: - куки - сессия - реквест - данные в БД |
эх.. жаль..
|
Цитата:
Цитата:
P.S. Видать весна... :D |
Цитата:
|
Часовой пояс GMT +3, время: 06:45. |