С Новым годом! Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
0 / 0 / 0
Регистрация: 13.11.2014
Сообщений: 111

Переход по ссылке по таймеру обратного отсчета с визуализацией времени

20.04.2023, 03:05. Показов 2026. Ответов 9

Студворк — интернет-сервис помощи студентам
Здравствуйте.
На сайте используется визуальный конструктор страниц для WordPress WPBakery Page Builder
С его помощью через произвольное поле я в публикации вывожу кнопку, дизайн которой определен классом, например класс btn, и при нажатии на которую происходит переход по внешней ссылке.
Пример ссылки:
HTML5
1
<a class="btn" href="https://www.cyberforum.ru/" target="_blank" rel="nofollow" rel="noreferrer" title="Download">Download free</a>
Нужно реализовать задачу, чтобы при нажатии на кнопку переход по ссылке происходил не сразу, а с задержкой, например в 30 секунд.

Вот пример того, как это работает
В выше указанном примере если нажать на зеленую кнопку Download, сначала срабатывает таймер обратного отсчета на 25 секунд, а уже затем начинается загрузка файла. Таймер, а также дополнительная информация появляются под кнопкой.
К тому же таймер работает лишь в том случае, когда пользователь находится непосредственно на станице загрузки и это окно активно. В противном случает таймер возвращается на исходную позицию и останавливается.

Как реализовать что-то подобное?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.04.2023, 03:05
Ответы с готовыми решениями:

Таймер обратного отсчёта(событие по таймеру)
Здравствуйте, может кто подсказать как реализовать такое?В общем нужен таймер обратного отсчёта, по прошествии какого-то времени(одна...

Картинка обратного отсчета времени
Суть заключается в следующем,хочу отослать html почту в которой будет обратный отсчет времени,но почтовик не разрешает выполнение java...

Таймер обратного отсчета времени
Всем привет если кто может помогите написать программу таймер отсчета времени с 5 мин до 0 и ежесекундным выводом на экран. Нашел для ВБА,...

9
 Аватар для Tanya2007
593 / 230 / 72
Регистрация: 13.05.2020
Сообщений: 412
20.04.2023, 12:41
Организовать счетчик можно так:

HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<style>
.InformNoShow{
    display: none;
}
</style>
 
<a class="btn" href="https://www.cyberforum.ru/" target="_blank" rel="nofollow" rel="noreferrer" title="Download">Download free</a>
<div id = 'addInform' class = 'InformNoShow'>
<div id = 'timer'>
</div>
МНОГО ДОПОЛНИТЕЛЬНОЙ ИНФОРМАЦИИ
</div>
 
<script>
let classBtn = document.querySelector('.btn');
let addInform = document.querySelector("#addInform");
let timer = document.querySelector('#timer');
let timeNoOver = true;
 
classBtn.addEventListener('click', function(event){
    if(timeNoOver){
        event.preventDefault();
        addInform.classList.remove('InformNoShow');
        timer.textContent = "Осталось 30 сек.";
        let timeCount = 29;
        let numInterval = setInterval(()=>{
            if (timeCount){
                timer.textContent = "Осталось " + timeCount + " сек.";
                timeCount--;
            } else {
                clearInterval(numInterval);
                addInform.classList.add('InformNoShow');
                timeNoOver = false;
                classBtn.click();
                timeNoOver = true;
            }
        }, 1000);
    }   
});
</script>
Что касается потери фокуса окна, надо подумать, этого не делала пока.
0
0 / 0 / 0
Регистрация: 13.11.2014
Сообщений: 111
20.04.2023, 12:48  [ТС]
Цитата Сообщение от Tanya2007 Посмотреть сообщение
Организовать счетчик можно так:
Спасибо, но есть нюанс! Пользователь может банально скопировать ссылку или кликнуть на нее средней кнопкой мышки, чтобы обойти таймер. Мне нужно как-то спрятать ссылку до окончания работы таймера, а только потом чтобы сработал переход.
0
 Аватар для Tanya2007
593 / 230 / 72
Регистрация: 13.05.2020
Сообщений: 412
20.04.2023, 12:57
Цитата Сообщение от marianoredondo Посмотреть сообщение
Спасибо, но есть нюанс! Пользователь может банально скопировать ссылку или кликнуть на нее средней кнопкой мышки, чтобы обойти таймер. Мне нужно как-то спрятать ссылку до окончания работы таймера, а только потом чтобы сработал переход.
HTML5
1
<a class="btn" href="#" target="_blank" rel="nofollow" rel="noreferrer" title="Download">Download free</a>
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
let classBtn = document.querySelector('.btn');
let addInform = document.querySelector("#addInform");
let timer = document.querySelector('#timer');
let timeNoOver = true;
let a_href = "https://www.cyberforum.ru/";
 
classBtn.addEventListener('click', function(event){
    if(timeNoOver){
        event.preventDefault();
        addInform.classList.remove('InformNoShow');
        timer.textContent = "Осталось 30 сек.";
        let timeCount = 29;
        let numInterval = setInterval(()=>{
            if (timeCount){
                timer.textContent = "Осталось " + timeCount + " сек.";
                timeCount--;
            } else {
                clearInterval(numInterval);
                addInform.classList.add('InformNoShow');
                timeNoOver = false;
                this.setAttribute('href', a_href);
                classBtn.click();
                timeNoOver = true;
                this.setAttribute('href', '#');
            }
        }, 1000);
    }   
});
0
0 / 0 / 0
Регистрация: 13.11.2014
Сообщений: 111
20.04.2023, 13:27  [ТС]
Цитата Сообщение от Tanya2007 Посмотреть сообщение
Сообщение от marianoredondo
Спасибо. Пытаюсь все это поместить в публикацию вот в таком виде:
Кликните здесь для просмотра всего текста
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
</head>
<body>
<a class="btn" href="#" target="_blank" rel="nofollow" rel="noreferrer" title="Download">Download free</a>
    <script>
let classBtn = document.querySelector('.btn');
let addInform = document.querySelector("#addInform");
let timer = document.querySelector('#timer');
let timeNoOver = true;
let a_href = "https://www.cyberforum.ru/";
 
classBtn.addEventListener('click', function(event){
    if(timeNoOver){
        event.preventDefault();
        addInform.classList.remove('InformNoShow');
        timer.textContent = "Осталось 30 сек.";
        let timeCount = 29;
        let numInterval = setInterval(()=>{
            if (timeCount){
                timer.textContent = "Осталось " + timeCount + " сек.";
                timeCount--;
            } else {
                clearInterval(numInterval);
                addInform.classList.add('InformNoShow');
                timeNoOver = false;
                this.setAttribute('href', a_href);
                classBtn.click();
                timeNoOver = true;
                this.setAttribute('href', '#');
            }
        }, 1000);
    }   
});
    </script>
</body>
</html>

но наверное, что-то делаю не так - не работает.
0
 Аватар для Tanya2007
593 / 230 / 72
Регистрация: 13.05.2020
Сообщений: 412
20.04.2023, 13:49
marianoredondo, ну этот же блок нужно было оставить)

HTML5
1
2
3
4
5
<div id = 'addInform' class = 'InformNoShow'>
<div id = 'timer'>
</div>
МНОГО ДОПОЛНИТЕЛЬНОЙ ИНФОРМАЦИИ
</div>
и блок стилей тоже..


Полностью должно быть так:

HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<!DOCTYPE html>
 
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width">
 
<title>Имя вашей публикации</title>
<style>
.InformNoShow{
    display: none;
}
</style>
 
</head>
 
<body>
 
<a class="btn" href="#" target="_blank" rel="nofollow" rel="noreferrer" title="Download">Download free</a>
<div id = 'addInform' class = 'InformNoShow'>
<div id = 'timer'>
</div>
МНОГО ДОПОЛНИТЕЛЬНОЙ ИНФОРМАЦИИ
</div>
 
<script>
let classBtn = document.querySelector('.btn');
let addInform = document.querySelector("#addInform");
let timer = document.querySelector('#timer');
let timeNoOver = true;
let a_href = "https://www.cyberforum.ru/";
 
classBtn.addEventListener('click', function(event){
    if(timeNoOver){
        event.preventDefault();
        addInform.classList.remove('InformNoShow');
        timer.textContent = "Осталось 30 сек.";
        let timeCount = 29;
        let numInterval = setInterval(()=>{
            if (timeCount){
                timer.textContent = "Осталось " + timeCount + " сек.";
                timeCount--;
            } else {
                clearInterval(numInterval);
                addInform.classList.add('InformNoShow');
                timeNoOver = false;
                this.setAttribute('href', a_href);
                classBtn.click();
                timeNoOver = true;
                this.setAttribute('href', '#');
            }
        }, 1000);
    }   
});
</script>
 
</body>
 
</html>
1
0 / 0 / 0
Регистрация: 13.11.2014
Сообщений: 111
20.04.2023, 14:00  [ТС]
Цитата Сообщение от Tanya2007 Посмотреть сообщение
Полностью должно быть так:
Теперь понятно. Еще раз спасибо за помощь.
Я так понимаю, что полностью спрятать ссылку, до отработки таймера, выбранным мною путем не получиться. В исходном коде страницы ее не сложно будет найти.
JavaScript - эта тема для меня совсем новая и я ошибочно подумал, что с ее помощью можно будет реализовать мою задачу. На этом сайте скачивание файлов как-то хитро реализовано. И ссылка вроде бы на виду, но если ее скопировать и отдельно вставить в адресную строку браузера - она "не сработает". Таймер и последующая загрузка работают только на странице публикации и никак иначе. Ладно, будем искать.
0
 Аватар для Tanya2007
593 / 230 / 72
Регистрация: 13.05.2020
Сообщений: 412
20.04.2023, 14:31
Не понимаю вас.

Цитата Сообщение от marianoredondo Посмотреть сообщение
JavaScript - эта тема для меня совсем новая и я ошибочно подумал, что с ее помощью можно будет реализовать мою задачу.
Ваша задача и реализуется с помощью JavaScript.

Цитата Сообщение от marianoredondo Посмотреть сообщение
И ссылка вроде бы на виду, но если ее скопировать и отдельно вставить в адресную строку браузера - она "не сработает".
Разве в моем коде не так? Переход по ссылке не произойдет пока не отработает таймер, попытка скопировать ссылку и вставить в адресную строку браузера вернет вас на вашу же страницу.

Добавлено через 1 минуту
P.S. догнала)) тупанула чет
0
0 / 0 / 0
Регистрация: 13.11.2014
Сообщений: 111
20.04.2023, 14:49  [ТС]
Цитата Сообщение от Tanya2007 Посмотреть сообщение
P.S. догнала)) тупанула чет
Мне бы столько знаний!
Я вот думаю, может спрятать ссылки в каком-то файле php, а в публикации кнопкой с кодом JavaScript как-то их оттуда доставать? Но как? И в правильном ли направлении я размышляю, или это плод моей больной фантазии!
0
 Аватар для Tanya2007
593 / 230 / 72
Регистрация: 13.05.2020
Сообщений: 412
20.04.2023, 14:53
marianoredondo,
Можно и так, для этого на сервер надо отправлять ajax запрос получения href ссылки.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.04.2023, 14:53
Помогаю со студенческими работами здесь

Скрипт обратного отсчета времени
Добрый день. Подскажите, пожалуйста, вот у меня есть кодовый скрипт отсчета времени на сайте. Проблема состоит в том, что все данные он...

Функции обратного отсчета времени
Прошу помочь с этими функциями: function downcounter($date) { $check_time = strtotime($date) - time()-60*60*2; //ОТНЯЛ 2 ЧАСА...

Таймер обратного отсчета времени
Есть скрипт обратного таймера, по истечению которого всплывает новое окно с текстом. Помогите переделать код так, чтобы по завершению...

Работа с таймером обратного отсчета времени
Добрый день. Есть необходимость использовать в приложении таймер обратного времени с выводом его на экран. Нашел в инете пример и...

Таймер обратного отсчета с редактированием времени
Здравствуйте, пробую написать код таймера на ХТМЛ и ПХП, что бы таймер допустим шел от 3 дней 12 часов и 17 сек до нуля. Но пока он...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru