Как мне запретить пользователю дважды щелкать ссылку в электронном письме?

#html #email #hyperlink #click #double

#HTML #Адрес электронной почты #гиперссылка #нажмите #двойной

Вопрос:

Когда пользователи запрашивают сброс пароля, они получают электронное письмо со ссылкой для генерации кода сброса пароля. Эта ссылка действительна в течение 24 часов и может быть повторно использована в течение 24 часов для генерации нового кода, если первая потеряна или забыта. Когда пользователи дважды щелкают по ссылке, генерируются два кода, что приводит к путанице пользователей в выборе того, какой из них использовать (второй код делает недействительным первый код в соответствии с тем, как он был разработан).

Поскольку ссылка в электронном письме — это просто html-тег a, я не уверен, как я могу запретить пользователям дважды щелкать ссылку.

Комментарии:

1. Я не уверен, что в электронном письме можно использовать javascript, но попробуйте это, возможно, это сработает: <a href="your_link" onclick="window.location.href='your_link'" ondblclick="window.location.href='/'">link</a>

Ответ №1:

Похоже, вы столкнулись с проблемой XY. Ваша реальная проблема заключается в том, что пользователи путаются в быстрой последовательности посещений, в результате чего только что сгенерированный код становится недействительным, а не в том, что ссылку можно щелкнуть дважды.

С точки зрения безопасности, такого рода ссылки действительно должны быть одноразовыми, и пользователь должен запросить новое электронное письмо, если он хочет выполнить действие снова. Предполагая, что это то, что вы вынуждены делать, я считаю, что лучшим компромиссом было бы ограничить генерацию кода временными рамками, чтобы посещения в течение, скажем, 5-10 секунд приводили к тому, что пользователю показывался тот же код, в зависимости от времени сервера.

Реализация любого решения на основе CSS для этого, которое работало бы во всех существующих почтовых клиентах, достаточно сложна (если это вообще возможно), и я сомневаюсь, что любой уважающий себя почтовый клиент позволит вам запустить какой-либо JavaScript для перехвата события.

Следующее работает в современном браузере на реальной веб-странице, но это не просто плохая идея, это также, вероятно, не сработает, если вы попытаетесь использовать это в электронном письме. Я привожу это здесь просто для полноты картины, показывая, что это в какой-то степени возможно, но, пожалуйста, не полагайтесь на это, чтобы устранить основную проблему.

 <style>a:focus { pointer-events: none }</style>
<p>This is some text, here's <a href="#try-me">a link</a> you can't double click by the way.</p>