【发布时间】:2014-08-23 00:27:55
【问题描述】:
在我的 javascript 代码中,我使用的是 window.open 方法,但行为完全不一致:根据我编写代码的方式,它将打开一个新选项卡或打开一个弹出窗口(被弹出窗口阻止)向上拦截器)。我不知道如何解决它感谢您的帮助。 html代码:
<a class='btn btn-success' target="_blank" onclick="quoteVisu(); return false;">Visualiser</a>
javascript代码:
function quoteVisu(){
quoteCreate(1);
}
quoteCreate 是一个带有 AJAX 调用的方法
function quoteCreate(num_function){
var request=$.ajax({
url: url_up,
type: "POST",
beforeSend: function(xhr) {xhr.setRequestHeader('X-CSRF-Token', $('meta[name="csrf-token"]').attr('content'))},
data: {q_param: {
title: title,
total: total,
list: list,
client: idclient,
tax_rate: tax_rate
}},
success: function(data, textStatus, jqXHR) {
if (num_function==1){request.done(goShow(data.quote_id))};
if (num_function==0){request.done(goBack());}
},
dataType: "json"
});
return true;
}
还有 goShow 方法:
function goShow(quote_id) {
var url_visu="/visu_pdf/quote_visu."+quote_id
window.open(url_visu, '_blank');
return true;
}
上面的代码给出了一个弹出窗口,这不是预期的行为。例如,如果我将 window.open 放在 quoteVisu 方法中,我将打开一个选项卡,而不是我想要的弹出窗口。但是如果我把它放在那里,我没有新窗口 url 所需的 JSON 的答案。
感谢您的帮助。
【问题讨论】:
-
You cannot control 是否弹出选项卡或窗口。这是一个本机实现。行为预计会在浏览器之间,甚至在其自身之间不一致。
-
首先,我会从链接中删除
target="_blank",这里没有意义。其次,由于异步 AJAX 调用,窗口的打开与实际的单击事件“解耦”,您可能会得到不同的行为 - 可能浏览器的反应不同。 -
这似乎是问题,但没有解决方案的事实非常疯狂,因为我想这是一个常见问题......
标签: javascript ajax window.open