Javascript 窗口。打开弹出窗口而不是新窗口
我在jQuery中有一个,ajax函数,我希望在完整函数中在新窗口或选项卡中打开urlJavascript 窗口。打开弹出窗口而不是新窗口,javascript,jquery,Javascript,Jquery,我在jQuery中有一个,ajax函数,我希望在完整函数中在新窗口或选项卡中打开url <a href="#" onclick="Add('1','http://www.google.com');return false;">Link</a> <a href="#" onclick="Add('1','http://www.google.com');return false;">Link</a> window.open函数用作弹出窗口,但我想在
<a href="#" onclick="Add('1','http://www.google.com');return false;">Link</a>
<a href="#" onclick="Add('1','http://www.google.com');return false;">Link</a>
window.open函数用作弹出窗口,但我想在新窗口中打开链接。我的工作是完美的。
但我的浏览器检测到它是一个弹出窗口并阻止它。
我的代码怎么了?为什么要等到AJAX调用完成后才加载URL 为什么不直接触发AJAX调用,然后直接打开新窗口呢 例如:
为什么要等到AJAX调用完成后才加载URL 为什么不直接触发AJAX调用,然后直接打开新窗口呢 例如:
我猜w3cschool.com可能会因为是一个授权的辅导网站而获得弹出窗口的特权 顺便说一句,在没有直接用户交互的情况下打开额外窗口的任何方式,例如单击,都被视为弹出窗口,并且会被大多数启用弹出窗口阻止程序的浏览器阻止。您的最佳选择可能是在单击后打开链接,并在AJAX完成后注入您想要的任何内容:
<a href="http://www.google.com" onclick="Add('1')">Link</a>
我猜w3cschool.com可能会因为是一个授权的辅导网站而获得弹出窗口的特权 顺便说一句,在没有直接用户交互的情况下打开额外窗口的任何方式,例如单击,都被视为弹出窗口,并且会被大多数启用弹出窗口阻止程序的浏览器阻止。您的最佳选择可能是在单击后打开链接,并在AJAX完成后注入您想要的任何内容:
<a href="http://www.google.com" onclick="Add('1')">Link</a>
我认为在不触发弹出窗口阻止程序的情况下以编程方式打开新窗口是不可能的。@Pekka:如果你看w3示例,它是以窗口而不是弹出窗口的形式打开的。我认为这是因为它是手动点击触发的,而在Ajax回调中不是这样。但是好问题,我有兴趣看看会发生什么。我认为不触发弹出窗口阻止程序就不可能以编程方式打开新窗口。@Pekka:如果你看w3示例,它是作为窗口而不是弹出窗口打开的。嗯,我想这是因为它是手动单击触发的,而在Ajax回调中不是这样。但好问题,我想看看会发生什么。因为它的触发器和我的ajax没有调用function.ashx中的Add函数。您可以编写一个示例吗?这是因为在您的代码中,window.open调用不是通过单击启动的。它由AJAX回调启动。在我的代码中,没有AJAX回调,window.open调用是在您进行AJAX调用后立即进行的,直接在Add函数中进行,这是由用户单击启动的,因此浏览器允许它打开窗口。因为它的触发器和我的AJAX不会在function.ashx中调用我的Add函数。您可以编写一个示例吗?这是因为在您的代码中,window.open调用不是通过单击启动的。它由AJAX回调启动。在我的代码中,没有AJAX回调,window.open调用是在您进行AJAX调用后立即进行的,直接在Add函数中进行,该函数由用户单击启动,因此浏览器允许它打开窗口。
<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
}
});
}