1

リンクと、そのリンクがクリックされたときにリッスンしてトリガーされる関数があります。

問題は、リンクが事前に不明であることです。したがって、この関数では、サーバーに 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 関数をトリガーするリンク (事前に不明) をクリックしたときに、ユーザーを新しいタブにリダイレクトするにはどうすればよいですか?

4

3 に答える 3

0

理想的な解決策は、これを 2 段階のプロセスにすることでした。ボタンを追加すると、クリックすると ajax リクエストが実行され、目的のリンクが取得され、JavaScript を使用すると、目的のリンク先の新しいリンクが新しいタブに表示されます。

于 2012-06-19T00:02:09.693 に答える
0

ajax を同期させるだけです。

$('a[href="unknown"]').click(function(ev) {
 $.ajax({
      type: "GET",
      url: "/get_link", 
      context: document.body,
      async: false
    }).done(function(response) { 
      link = response.link

      //substitute href of a to the new link

  });
});

設定は廃止されたようで、代替手段がどうあるべきかわかりませんが、今のところ機能しています。

于 2012-06-15T21:10:36.577 に答える
0

これをサーバー側で行うこともできます。ユーザーを既知の URL に送信し、ユーザーを適切な URL にリダイレクト (HTTP 303) します。

于 2012-06-15T21:16:57.387 に答える