Я только что решил эту проблему для клиента онлайн-банкинга.FDIC требует подтверждения «speedbump» всякий раз, когда пользователь переходит на сторонний сайт.Мы хотели сделать это ненавязчиво и сделать невозможным обход.
Я протестировал это с IE, Firefox, Chrome и Android - щелкни, щелкни правой кнопкой мыши, щелкни средней кнопкой мыши, нажми Shift, нажми F10, введите, долгое нажатие, все (Firefox трудный).Либо вы получаете быстрый удар, либо вы получаете пустую вкладку, вы не можете обойти ее.
document.ready = function() {
var handleSpeedBump = function(e) {
e.preventDefault();
var href = this.getAttribute("data-href");
var sure = confirm("Are you sure you want to navigate to " + href + "? This is a third party site and not owned by this institution.");
if (!sure) return;
document.location = href;
}
$("a.speedbump")
.click(handleSpeedBump)
.bind("contextmenu", handleSpeedBump)
.dblclick(handleSpeedBump)
.each(function() {
var href = this.href;
this.setAttribute("data-href", href);
this.href = "javascript:void('Navigate to " + href.replace("'", "") + "')";
})
}
Чтобы это работало, просто напишите свою ссылку в обычном порядке и добавьте «быстрый удар» к ее классам.
<A href="www.thirdpartysite.com" class="speedbump">Here is the link!</A>