在javascript中使用window.open时阻止弹出窗口

在javascript中使用window.open时阻止弹出窗口,javascript,jquery,Javascript,Jquery,实际上,我的真实情况是 当用户打开模式弹出窗口(比如引导模式弹出窗口)时,我们需要打开一个用户已经保存的url 所以我试着打开窗户。打开。但这总是阻碍我。有没有办法克服这个问题 我尝试过以下场景。 当我尝试使用window.open打开(链接“_blank”)如果浏览器阻止了弹出窗口,则我受浏览器限制在“新建”选项卡中打开url 为了克服这个问题,我尝试了创建锚定链接和触发点击事件。但这也不起作用 var link = document.createElement('a'); link.setA

实际上,我的真实情况是

当用户打开模式弹出窗口(比如引导模式弹出窗口)时,我们需要打开一个用户已经保存的url

所以我试着打开窗户。打开。但这总是阻碍我。有没有办法克服这个问题

我尝试过以下场景。

当我尝试使用
window.open打开(链接“_blank”)如果浏览器阻止了弹出窗口,则我受浏览器限制在“新建”选项卡中打开url

为了克服这个问题,我尝试了创建锚定链接和触发点击事件。但这也不起作用

var link = document.createElement('a');
link.setAttribute('href', url);
link.target="_blank";
var event = document.createEvent('MouseEvents');
                                            event.initMouseEvent('click', true, true, window, 1, 0, 0, 0, 0, false, false, false, false, 0, null);
                                            link.dispatchEvent(event);
一些网站通过传递此功能

比如说,,

当我单击“登录”按钮时,一个新窗口正在打开。它们还具有与窗口相同的功能。打开。但该浏览器并没有阻挡花旗银行的新窗口

我不知道这背后的原因是什么。如何实现这一点 特征

现在还不清楚你在哪里/什么时候尝试打开链接,根据你对使用JS的需求判断,我猜这不是通过点击现有的按钮/链接

我看到你的问题是:


即使您在JS/jQuery中创建一个锚链接,并以编程方式调用
click()
(我刚刚尝试过),浏览器/弹出窗口拦截器似乎仍然将其视为一个弹出窗口(因为它是从代码中完成的,而不是“真正的”单击)

做一些挖掘,似乎无论如何都没有办法绕过这个。我在另一个答案上找到了这句话,所以:

“弹出窗口阻止程序通常只允许在处理用户事件(如单击)期间使用window.open” 资料来源:


无论如何,您可以使用jQuery创建一个元素,并在一行中单击它。 我的浏览器仍然检测到它是一个“弹出窗口”,所以请记住这一点

你可以这样做:

  • 使用jQuery创建一个
    a
    元素
  • 使用
    .click()
    函数模拟单击
    href
    (前面是
    [0]
    索引器-TL;DR)
jQuery:

$('<a href="http://your.link.com" target="_blank">&nbsp;</a>')[0].click();
window.open("yourlink.com", "_target");
只需将它放在处理程序/方法中,用于单击“链接”的位置/时间

希望这有帮助!:)

不清楚您在何时何地尝试打开链接,根据您使用JS的需要判断,我猜这不是通过单击现有按钮/链接实现的

我看到你的问题是:


即使您在JS/jQuery中创建一个锚链接,并以编程方式调用
click()
(我刚刚尝试过),浏览器/弹出窗口拦截器似乎仍然将其视为一个弹出窗口(因为它是从代码中完成的,而不是“真正的”单击)

做一些挖掘,似乎无论如何都没有办法绕过这个。我在另一个答案上找到了这句话,所以:

“弹出窗口阻止程序通常只允许在处理用户事件(如单击)期间使用window.open” 资料来源:


无论如何,您可以使用jQuery创建一个元素,并在一行中单击它。 我的浏览器仍然检测到它是一个“弹出窗口”,所以请记住这一点

你可以这样做:

  • 使用jQuery创建一个
    a
    元素
  • 使用
    .click()
    函数模拟单击
    href
    (前面是
    [0]
    索引器-TL;DR)
jQuery:

$('<a href="http://your.link.com" target="_blank">&nbsp;</a>')[0].click();
window.open("yourlink.com", "_target");
只需将它放在处理程序/方法中,用于单击“链接”的位置/时间


希望这有帮助!:)

您已经在OP中标记了jQuery,但您的代码是Vanilla JS。您是否正在使用任何一种方法寻找解决方案?您什么时候尝试打开登录页面?是否在页面加载事件中?或者当用户单击一个链接时,等等?即使您在JS/jQuery中创建了一个锚链接,并以编程方式调用
click()
(我刚刚尝试过)-浏览器似乎仍然将其视为一个弹出窗口(就像从代码中执行的一样,而不是“真正的”单击)。是什么阻止你在页面上只使用“登录”按钮?我想这就是你给出的示例站点正在使用的内容?我正在尝试使用window.open从我的站点打开另一个网站url。我可以从你的OP中看到这一点。不清楚的是何时以及为什么你不能在页面中使用普通的
?你能回答我提出的问题,有人能更好地帮助你吗?弹出窗口拦截器阻止非用户操作启动的弹出窗口。这就是他们的工作方式。如果有解决办法,弹出窗口拦截器就真的没用了。:)您已经在OP中标记了jQuery,但您的代码是Vanilla JS。您是否正在使用任何一种方法寻找解决方案?您什么时候尝试打开登录页面?是否在页面加载事件中?或者当用户单击一个链接时,等等?即使您在JS/jQuery中创建了一个锚链接,并以编程方式调用
click()
(我刚刚尝试过)-浏览器似乎仍然将其视为一个弹出窗口(就像从代码中执行的一样,而不是“真正的”单击)。是什么阻止你在页面上只使用“登录”按钮?我想这就是你给出的示例站点正在使用的内容?我正在尝试使用window.open从我的站点打开另一个网站url。我可以从你的OP中看到这一点。不清楚的是何时以及为什么你不能在页面中使用普通的
?你能回答我提出的问题,有人能更好地帮助你吗?弹出窗口拦截器阻止非用户操作启动的弹出窗口。这就是他们的工作方式。如果有解决办法,弹出窗口拦截器就真的没用了。:)这两种情况都会导致Chrome的弹出窗口阻止程序阻止其打开。这两种情况都会导致Chrome的弹出窗口阻止程序阻止其打开。