私はオンラインバンキングのクライアントのために、この問題を解決しました。 FDICでは、ユーザーがサードパーティのサイトに移動するたびに、「スピードバンプ」の確認が必要です。私たちはそれを目立たないようにし、周りを回ることを不可能にしたかったのです。
これをIE、Firefox、Chrome、Androidでテストしました。クリック、右クリック、ミドルクリック、シフトクリック、シフト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("'", "") + "')";
})
}
この作業を行うには、通常のリンクを書き込み、そのクラスに「speedbump」を追加してください。
<A href="www.thirdpartysite.com" class="speedbump">Here is the link!</A>
どのブラウザで問題がありますか?最初の解決策は、Chromeの左クリックと中クリックについて機能するようです。 –
リンクの代わりにボタンを使用することをお勧めします。 – Teneff
リンクを削除したり、GETリクエストを使用したりしないでください。 HTTP仕様では、GETは安全であると定義されています。送信ボタン付きのフォームを使用します。 (そして、中クリックはonsubmitイベントをバイパスしません)。 – Quentin