我在jQuery中有一个ajax函数,我希望在完整的函数中在新窗口或标签中打开一个url。
<a href="#" onclick="Add('1','http://www.google.com');return false;">Link</a>
并且:
function Add(ID, url)
{
var data = "{'ID' : '" + ID + "'}";
$.ajax({
type: "POST",
url: "Function.ashx/Add",
data: data,
contentType: "application/json; charset=utf-8",
dataType: "json",
complete: function ()
{
window.open(url);
}
});
}
window.open函数用作弹出窗口,但我想在新窗口中打开链接。 w3School Example完美无缺。 但我的浏览器将其检测为弹出窗口并将其阻止 我的代码出了什么问题?
答案 0 :(得分:1)
为什么要专门等到AJAX调用完成加载URL?
为什么不直接触发AJAX调用并在之后直接打开新窗口。
示例:
<a href="#" onclick="Add('1','http://www.google.com');return false;">Link</a>
function Add(ID, url)
{
var data = "{'ID' : '" + ID + "'}";
$.ajax({
type: "POST",
url: "Function.ashx/Add",
data: data,
contentType: "application/json; charset=utf-8",
dataType: "json"
});
window.open(url);
}
答案 1 :(得分:0)
我猜w3cschool.com可能会成为授权辅导网站的popup previlige。
AFAIK,任何在没有直接用户交互(例如点击)的情况下打开额外窗口的方法都被视为“弹出窗口”,并且在启用弹出窗口阻止程序的情况下会被大多数浏览器阻止。你最好的选择可能是在点击时打开链接并在AJAX完成时注入你想要的任何东西:
<a href="http://www.google.com" onclick="Add('1')">Link</a>
function Add(ID, url)
{
var newWindow = window.open(url);
var data = "{'ID' : '" + ID + "'}";
$.ajax({
type: "POST",
url: "Function.ashx/Add",
data: data,
contentType: "application/json; charset=utf-8",
dataType: "json",
complete: function (data)
{
// do whatever you want with newWindow
}
});
}