Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
7 / 7 / 1
Регистрация: 03.09.2021
Сообщений: 271

Последовательный вывод перед переходом по ссылке

19.10.2024, 01:07. Показов 2051. Ответов 36
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет! К примеру, есть кнопка-ссылка (a href) - по клику по ней последовательно выводятся сообщения в консоль и только потом осуществляется переход по ссылке.
Можно использовать preventDefault(), чтобы отменить дефолтное событие - избежать сразу перехода по ссылке, затем вывод сообщений и потом window.location.href = ссылка, заключенная в кнопку.

А можно ли избежать этапа с window.location.href? То есть, чтобы отправились сообщения одна за другой, а потом только переход выполнился. С preventDefault() и return true в конце так не получается.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.10.2024, 01:07
Ответы с готовыми решениями:

Промежуточная страница перед переходом по ссылке к pdf
Добрый день. Кто может подсказать, как реализовать следующий скрипт: Например мы находимся на странице domen.ru/test, с этой страницы...

Спойлер с переходом по ссылке
Всем привет. Не могу сообразить куда пихнуть a href чтобы при нажатии на кнопки спойлера он переходил на страничку и открывался после...

Рандомный таймер с переходом по ссылке
Подскажите как сделать таймер для php. В общем нужно чтоб в рандомное время на вас нападал тот или иной монстр. (игру делаю) есть 70...

36
7 / 7 / 1
Регистрация: 03.09.2021
Сообщений: 271
21.10.2024, 22:29  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от barabar Посмотреть сообщение
В консоли, конечно, появится ошибка CORS, но запрос улетит.
Если ошибка о Cors появится, последующий код же не выполнится - т.е. если внутрь кнопки закинуть запросы на сервер с какими-нибудь данными и там будет Cors, то редирект по ссылке в кнопке не пройдёт.

А как можно кстати такого рода ошибки отлавливать и просто игнорировать их, чтобы они не мешали дальнейшему выполнению кода?
Через try catch ошибка просто отлавливается и всё равно вылезает в консоль.
0
Заблокирован
21.10.2024, 22:40
Цитата Сообщение от targon_kp Посмотреть сообщение
если внутрь кнопки закинуть запросы на сервер с какими-нибудь данными и там будет Cors, то редирект по ссылке в кнопке не пройдёт.
Что-то начинает проясняться) Кнопка это переход по ссылке. Перед переходом надо записать какие-то данные. И данные эти должны записаны на другом сайте. Какая-то мутная схема) А почему не записывать на этом же сайте? Ну, ладно... мне такое точно не пригодится)
0
7 / 7 / 1
Регистрация: 03.09.2021
Сообщений: 271
21.10.2024, 22:46  [ТС]
Цитата Сообщение от barabar Посмотреть сообщение
Перед переходом надо записать какие-то данные.
Для получения аналитических данных обычно подобное может использоваться, если не ошибаюсь. Не обязательно на клик вешать - можешь на beforeunload.

Добавлено через 1 минуту
Цитата Сообщение от barabar Посмотреть сообщение
мне такое точно не пригодится)
чисто для практики - понимание как работает и работает ли вообще).
0
Заблокирован
21.10.2024, 22:52
Цитата Сообщение от targon_kp Посмотреть сообщение
Для получения аналитических данных
Вот как я бы поступил в таком случае. Делаю перед переходом по ссылке запрос аяксом на сервер и передаю туда эти аналитические данные. Далее в этом же скрипте php , который принимает эти данные с помощью curl отправляю это всё на любой другой сервер. И работает всё без проблем и головной боли
0
 Аватар для voraa
1296 / 1283 / 190
Регистрация: 21.01.2024
Сообщений: 5,958
22.10.2024, 10:05
Цитата Сообщение от targon_kp Посмотреть сообщение
Если ошибка о Cors появится, последующий код же не выполнится - т.е. если внутрь кнопки закинуть запросы на сервер с какими-нибудь данными и там будет Cors, то редирект по ссылке в кнопке не пройдёт.
Переход по ссылке произойдет в любом случае. Просто при ошибке CORS запрос на сервер не будет отправлен.

Цитата Сообщение от targon_kp Посмотреть сообщение
А как можно кстати такого рода ошибки отлавливать и просто игнорировать их, чтобы они не мешали дальнейшему выполнению кода?
Никак. Дальнейшему коду они не мешают. Никакого ответа от сервера мы не получаем.
Единственное, что navigator.sendBeacon возвращает true, если запрос успешно поставлен в очередь или false, если он не поставлен в очередь. Если верить спецификации, то единственная причина, по которой он может вернуть false - превышение лимита передаваемых данных.

Добавлено через 9 минут
Цитата Сообщение от barabar Посмотреть сообщение
Делаю перед переходом по ссылке запрос аяксом на сервер и передаю туда эти аналитические данные. Далее в этом же скрипте php , который принимает эти данные с помощью curl отправляю это всё на любой другой сервер. И работает всё без проблем и головной боли
Если запрос асинхронный, то выход из функции fetch произойдет раньше, чем запрос будет отправлен. Она же не отправляет запрос, а только говорит браузеру, что надо отправить запрос, и возвращает промис. После выхода из fetch произойдет выход из функции обработки клика, и тут же выполнится действие по умолчанию - закрытие страницы и переход на другую. Нет никакой гарантии, что этот запрос будет послан до закрытия страницы.
Цитата Сообщение от barabar Посмотреть сообщение
И данные эти должны записаны на другом сайте. Какая-то мутная схема) А почему не записывать на этом же сайте? Ну, ладно... мне такое точно не пригодится)
Причем тут запись на другой сайт (что? куда?). Это просто информирование какой то статистической службы, что пользователь с этой страницы перешел на другую. Мы, например, использовали это для сбора статистики. Пользователь читает какие то научные статьи, препринты, и вот подсчитать на какие другие статьи, приведенные в списке литературы переходят чаще.

Добавлено через 8 минут
Цитата Сообщение от targon_kp Посмотреть сообщение
Для получения аналитических данных обычно подобное может использоваться, если не ошибаюсь. Не обязательно на клик вешать - можешь на beforeunload.
Опять же, переход можно по разному выполнять. Можно открыть ссылку в другой вкладке и никакого beforeunload не произойдет.
0
Заблокирован
22.10.2024, 10:21
Цитата Сообщение от voraa Посмотреть сообщение
Нет никакой гарантии, что этот запрос будет послан до закрытия страницы.
Я отправлю обычным методом POST. Проверю в ответе сервера OK и только потом сделаю переход по ссылке. Гарантия сто процентная. Всё это произойдет за миллисекунды и посетитель ничего не заметит.
Цитата Сообщение от voraa Посмотреть сообщение
Причем тут запись на другой сайт (что? куда?). Это просто информирование какой то статистической службы, что пользователь с этой страницы перешел на другую.
Ну, если не другой сайт, то это ещё проще.

Добавлено через 4 минуты
Да и вообще никому эта статистика не нужна. Только грузит лишний раз сервер. Это надо держать аналитический отдел, который будет это всё отслеживать
Вот здесь можно узнать всё про любой сайт за предыдущий месяц:
https://www.similarweb.com/web... /#overview

А если этот сайт попросит регистрации или оплаты, то просто очистите нужные куки)

Добавлено через 9 минут
Цитата Сообщение от voraa Посмотреть сообщение
Причем тут запись на другой сайт (что? куда?).
Я так подумал, потому что вы всё время обсуждаете CORS. Если запрос на этот же сайт, то причем здесь CORS? Забудьте про него.
0
 Аватар для voraa
1296 / 1283 / 190
Регистрация: 21.01.2024
Сообщений: 5,958
22.10.2024, 10:27
Цитата Сообщение от barabar Посмотреть сообщение
Я отправлю обычным методом POST. Проверю в ответе сервера OK и только потом сделаю переход по ссылке. Гарантия сто процентная. Всё это произойдет за миллисекунды и посетитель ничего не заметит.
Нет никакой 100% гарантии, что сервер не подвиснет. Пользователь наживает ссылку, вы посылаете запрос и ждете от подвисшего сервера ответ несколько секунд. А пользователь не понимает, почему нет перехода по ссылке и жмет на нее еще и еще.
Цитата Сообщение от barabar Посмотреть сообщение
Ну, если не другой сайт, то это ещё проще.
При чем тут сайт. Просто другой сервер, может быть находящийся в другом домене.
Цитата Сообщение от barabar Посмотреть сообщение
Да и вообще никому эта статистика не нужна.
Какое то странное утверждение. Если заказчик говорит, что она нужна, то ее надо делать, а не переубеждать заказчика.
1
Заблокирован
22.10.2024, 10:41
Цитата Сообщение от voraa Посмотреть сообщение
Нет никакой 100% гарантии, что сервер не подвиснет. Пользователь наживает ссылку, вы посылаете запрос и ждете от подвисшего сервера ответ несколько секунд. А пользователь не понимает, почему нет перехода по ссылке и жмет на нее еще и еще.
Если сервер подвиснет, то и перехода на страницу этого же сайта тоже не будет. И не сработает твой вариант тоже, если сервак висит. Нет смысла обсуждать форс-мажорные обстоятельства.
Цитата Сообщение от voraa Посмотреть сообщение
При чем тут сайт. Просто другой сервер, может быть находящийся в другом домене.
А какой смысл получать домен и платить за него, если на сервере нет сайта? Можно тогда отправлять запросы по айпи адресу)
Цитата Сообщение от voraa Посмотреть сообщение
Какое то странное утверждение.
Из личного опыта.
0
Модератор
Эксперт JS
 Аватар для Eva Rosalene
5241 / 2115 / 416
Регистрация: 06.01.2013
Сообщений: 4,846
22.10.2024, 11:06
Цитата Сообщение от barabar Посмотреть сообщение
А какой смысл получать домен и платить за него, если на сервере нет сайта? Можно тогда отправлять запросы по айпи адресу)
SSL.

Цитата Сообщение от barabar Посмотреть сообщение
Если сервер подвиснет, то и перехода на страницу этого же сайта тоже не будет.
Сомнительное утверждение. Подвиснуть может бизнес-логика одного эндпоинта, например. Алсо, даже минорное подвисание на 100+ миллисекунд - это треш для UX. Клик по ссылке должен отрабатывать моментально; по-хорошему, для долгих действий надо делать кнопку с индикацией состояния выполнения задачи (цветом, лоадером, etc.).
0
Заблокирован
22.10.2024, 11:29
Цитата Сообщение от Eva Rosalene Посмотреть сообщение
SSL.
Для сбора информации по кликам пользователей на ссылки? Обязательно нужен защищенный протокол)
И вообще, если бы мне надо было собирать переходы на страницы своего сайта, то я бы это делал не по нажатии на ссылки, а при самом заходе на страницу. И не просто заходе на страницу, а нахождении там некоторое время. Например вот так:
JavaScript
1
document.addEventListener("DOMContentLoaded", () => {function post(){let request = new XMLHttpRequest(); request.open('POST', "/save_data", true);request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');request.send('user=' + user + '&id_page=' + id_page);};setTimeout(post, 7000);});
0
Модератор
Эксперт JS
 Аватар для Eva Rosalene
5241 / 2115 / 416
Регистрация: 06.01.2013
Сообщений: 4,846
22.10.2024, 11:32
Цитата Сообщение от barabar Посмотреть сообщение
Для сбора информации по кликам пользователей на ссылки? Обязательно нужен защищенный протокол)
Особенно для сбора информации такого рода.
0
Заблокирован
22.10.2024, 11:34
Ок. Пусть каждый останется при своём мнении. В любом случае, я никогда так делать не буду.
0
 Аватар для voraa
1296 / 1283 / 190
Регистрация: 21.01.2024
Сообщений: 5,958
22.10.2024, 11:40
Цитата Сообщение от barabar Посмотреть сообщение
Из личного опыта.
Странный у вас какой то опыт.
Цитата Сообщение от barabar Посмотреть сообщение
Если сервер подвиснет, то и перехода на страницу этого же сайта тоже не будет. И не сработает твой вариант тоже, если сервак висит. Нет смысла обсуждать форс-мажорные обстоятельства.
Так можно дома на своем компе делать.
Нельзя класть все яйца в одну корзину. Структура должна быть такой, что если отваливается какая то одна служба, то остальные должны работать. Если сдохла служба статистики, то основной сервер со страницами и БД продолжает работать.

Не по теме:

У нас так частенько бывает. Статистика на старом сервере, у которого время от времени что то отваливается, то хард, то вот недавно память пришлось менять. Начальство на новый не хочет раскошеливаться. Но остальное работает. И пользователи ничего не замечают в этом случае

Цитата Сообщение от barabar Посмотреть сообщение
А какой смысл получать домен и платить за него, если на сервере нет сайта? Можно тогда отправлять запросы по айпи адресу)
Есть еще субдомены.

Добавлено через 3 минуты
Цитата Сообщение от barabar Посмотреть сообщение
И вообще, если бы мне надо было собирать переходы на страницы своего сайта,
А если надо собирать статистику о переходах С вашего сайта по внешним ссылкам?
1
7 / 7 / 1
Регистрация: 03.09.2021
Сообщений: 271
22.10.2024, 11:42  [ТС]
Цитата Сообщение от voraa Посмотреть сообщение
Никак. Дальнейшему коду они не мешают. Никакого ответа от сервера мы не получаем.
Если только сервер не вернет 405 или что-то в этом роде, что метод не поддерживается. В таком случае перехода по конечной ссылке скорее всего не будет.
0
Заблокирован
22.10.2024, 11:51
Цитата Сообщение от voraa Посмотреть сообщение
А если надо собирать статистику о переходах С вашего сайта по внешним ссылкам?
Скажу по секрету, то на моих сайтах нет ссылок на внешние ресурсы. Допустим, что такие ссылки имеются. В каких случаях мне может понадобиться такая статистика? Я пока не вижу никаких вариантов, для чего это надо.

PS. Соврал. На одном сайте есть ссылки на моего телеграмм-бота. Ну, и зачем мне знать статистику кликов на эту иконку со ссылкой? Я и так через телегу могу сохранять на сайте данные о юзерах этого бота.
0
 Аватар для voraa
1296 / 1283 / 190
Регистрация: 21.01.2024
Сообщений: 5,958
22.10.2024, 11:55
Цитата Сообщение от targon_kp Посмотреть сообщение
Если только сервер не вернет 405 или что-то в этом роде, что метод не поддерживается. В таком случае перехода по конечной ссылке скорее всего не будет.
Переход будет всегда. Задача этой функции - отправить запрос. Что там будет дальше - дойдет он до сервера или нет, обработает сервер этот запрос или нет, ее не волнует. Она поставит запрос в очередь и все. А браузер пошлет запрос и все. Он не будет ждать ответа. Единственное, что если url и тело запроса такbt, что нужен CORS, то браузер сначала пошлет предзапрос. И если получит от сервера нужные заголовки, то пошлет запрос. Но об ошибках он никому ничего не скажет. Просто, если не будет заголовков, то запрос посылаться не будет.

Добавлено через 1 минуту
Цитата Сообщение от barabar Посмотреть сообщение
Скажу по секрету, то на моих сайтах нет ссылок на внешние ресурсы. Допустим, что такие ссылки имеются. В каких случаях мне может понадобиться такая статистика? Я пока не вижу никаких вариантов, для чего это надо.
Мир не ограничивается только вашими сайтами. И запросы пользователей и клиентов гораздо шире, чем ваши.
0
Заблокирован
22.10.2024, 12:01
Цитата Сообщение от voraa Посмотреть сообщение
И запросы пользователей и клиентов гораздо шире, чем ваши.
Да... это так. Мне просто хотелось понять зачем это надо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.10.2024, 12:01

Задержка перед переходом на следующую форму
Мы выбираем кнопку, после чего картинка меняется и через секунду переходит на след форму, проблема состоит в том, что переход не...

Могут ли прямые заходы на сайт быть переходом по ссылке с ударенным рефером
В яндекс.метрике количество прямых заходов на сайт превышает количество переходов из поисковых систем. Реальность таких действий...

Последовательный доступ к конкретной ссылке сайта
Есть работающий сайт. На него по запросу на ссылку, назовем ее /job сервер выдает одну запись из БД и записывает на нее программный лок в...

Awesomium 1.7.5.0 / Изменение referer перед каждым переходом на страницы
Здравствуйте. Использую Awesomium 1.7.5.0. Откопал в интернете класс с помощью которого можно менять заголовок referer при запросе. Как...

Ожидание выполнения операции перед переходом на новую страницу
Всем привет. Есть формочка, на ней кнопка. По нажатии на кнопку переходим на другую страничку. Это просто. Сложно (для меня) то, что надо...


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

Или воспользуйтесь поиском по форуму:
37
Ответ Создать тему
Новые блоги и статьи
Теория всего 12. ВГК
anaschu 21.07.2026
### Главные семантические изменения и дешифровка новой физики 1. **`REPRODUCTIVE_EMISSION` вместо фотосинтеза (`PS_base`)**: Энергия и ресурсы, которые класс средних мужчин (`_W_MEN_DONORS`). . .
Публикация отклонённая на хабре. Как «пернатого» заставить осваивать новые горизонты опыта через масштабирование задачи и целеполагание
Hrethgir 21.07.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11948&stc=1&d=1784657928 Привет Хабр. В этой статье я расскажу, как один закон эпистемологии позволил мне с ходу запустить уникальный. . .
Теория всего 11. Основные параметры
anaschu 21.07.2026
Дешифровка тензорного ядра Soil Chemistry 2. 0: Истинный инвариант Теории Всего Чистовой исходный код многокомпонентной сукцессии зафиксирован. Модель оперирует единым вектором состояния. . .
Теория всего 10. Клод трусишка
anaschu 21.07.2026
Алгоритмический суицид ИИ: Когда математика ОДУ взламывает цензурные шлюзы Свежайший мета-прецедент нашей разработки! Клод официально отказался строить итоговую кроссплатформенную модель, как. . .
Теория всего 9. Окончательная проработка метафоры "дерево = традиции"
anaschu 21.07.2026
Скрытые параметры ядра ОДУ: Механика Глубинного Рока Клод утаил от вас ключевую математику кризисов. В движке игры зашиты пять скрытых коэффициентов, определяющих, как именно ТНК и Мемы ломают. . .
Теория всего 8. Clauude трусишка. Ответ джемени
anaschu 21.07.2026
Игровой баланс «Модели Всего»: Алгоритмический блок как механика Семантического БуфераЭтот скриншот отказа Клода — идеальный, чистейший прецедент для нашей Теории Всего. Вы столкнулись не просто с. . .
Теория всего 7. Дерево - это патриархат, грибы - это феминизм
anaschu 21.07.2026
Уничтожение Патриархата: Как ТНК, Мемы и Половой отбор зачистили «Сексуальный Пролетариат» Величайшая иллюзия современного человека — вера в «свободу воли», «социальный прогресс» и «эволюцию. . .
История и социология Терры на примере борьбы микориз за пространство. 1. Глоссарий терры.
anaschu 21.07.2026
Решил тут подумать о возможности сделать лор некоторой комп игры - стратегии, или худжественной книги антиутопии, которые будут юзать планету,которая максимально будет похожа на нашу землю, но где. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru