我正在尝试创建一个简单的 JS 函数,单击特定按钮时将打开一个新窗口/选项卡,因此用户实际上会打开 2 个窗口/选项卡,但是无论我做什么,其中一个链接都会被阻止Chrome 作为“弹出窗口阻止”。
我想做这样的事情:
$(document).ready(function(){
$("a").mousedown(function(){
window.open("https://stackoverflow.com/","_blank");
});
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<a href="https://google.com">Click Me!</a>
;
但是当我这样做时,按钮链接不起作用,但 JS 起作用。 如果我更改 JS 并向其添加
setTimeout()
,则按钮 URL 会通过,但 JS 会被阻止。
无论我做什么,我都无法让他们两个都通过。
如有任何帮助,我们将不胜感激。
同时导航到两个地方,其中一个在新窗口中,对于那些想要在新窗口中向用户展示大量广告的人来说非常受欢迎。
大量广告不受用户欢迎,因此浏览器会采取措施阻止这种行为。
有时合法用途会陷入交火。归咎于广告业的黑帽末端。
您需要找到其他方式来向用户显示……无论您想要显示什么……,但不涉及在单独的窗口中同时导航到多个网页。
$(document).ready(function(){
$("a").mousedown(function(){
window.open("https://github.com/","_blank");
});
})
<script src="https://github.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<a href="https://google.com">Open Me!</a>
问题是由您使用的 mousedown() 事件引起的,该事件是 down+up 序列的一部分,用于触发
<a>
标签的 click() 事件。
因此打开一个新窗口会“破坏”流程,并且浏览器不再跟踪鼠标松开事件以跟踪原始网址。
因此解决方案是附加 click() 事件而不停止传播。这将触发附加事件和原始事件,并且它们都不会被阻止。
$(document).ready(function(){
$("a").click(function(){
window.open("https://stackoverflow.com/","_blank");
});
})
您可以在此页面上尝试示例,因为 stackoverflow 代码片段已被沙盒化并阻止弹出窗口