我有一个链接和一个函数,当该链接被点击时,它会监听并触发。
问题是链接事先是未知的。因此,在此函数中,向服务器发出 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 是异步的,因此用户将首先被重定向到 unknown。然后,当收到响应时,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 函数?