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