リンクと、そのリンクがクリックされたときにリッスンしてトリガーされる関数があります。
問題は、リンクが事前に不明であることです。したがって、この関数では、サーバーに ajax リクエストを送信して取得します。ユーザーが要求した場合にのみリンクを生成する必要があり、事前に生成することはできないという厳格な要件があります。
次に、新しいタブでユーザーをそのリンクにリダイレクトするにはどうすればよいですか?
言い換え
だから私が持っていると仮定して
<a href="unknown" target="_blank">My Link</a>
また、クリック時にトリガーされるイベント ハンドラーがあります。
私はいくつかの異なるアプローチを試みました。初めて
$('a[href="unknown"]').click(function(ev) {
$.ajax({
type: "GET",
url: "/get_link",
context: document.body
}).done(function(response) {
link = response.link
//substitute href of a to the new link
});
});
ajax は非同期であるため、これが機能しないことに気付きました。そのため、ユーザーは最初に不明にリダイレクトされます。次に、応答が受信されると、href が正しいリンクに置き換えられます。
それで、ajax async:false を作成しようとしましたが、それでもうまくいかず、ブラウザをロックするのが苦手でした。
最後に、デフォルトの動作を抑制してから、新しいウィンドウを開きました (ただし、jquery を使用して新しいタブを開くことはできませんでした)。
$('a[href="unknown"]').click(function(ev) {
ev.preventDefault();
$.ajax({
type: "GET",
url: "/get_link",
context: document.body
}).done(function(response) {
link = response.link
//substitute href of a to the new link
window.open(link)
});
});
どうやら、グーグルで調べた後、ユーザーのブラウザ設定に基づいているため、jqueryで新しいタブを開くことができません。
ユーザーが ajax リクエストを使用してリンクを取得する JavaScript 関数をトリガーするリンク (事前に不明) をクリックしたときに、ユーザーを新しいタブにリダイレクトするにはどうすればよいですか?