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

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

20.04.2023, 03:05. Показов 2085. Ответов 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
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru