单击链接并使用 window.open() 阻止其中一个链接

问题描述 投票:0回答:3

我正在尝试创建一个简单的 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 会被阻止。 无论我做什么,我都无法让他们两个都通过。

如有任何帮助,我们将不胜感激。

javascript jquery google-chrome popup
3个回答
3
投票

同时导航到两个地方,其中一个在新窗口中,对于那些想要在新窗口中向用户展示大量广告的人来说非常受欢迎。

大量广告不受用户欢迎,因此浏览器会采取措施阻止这种行为。

有时合法用途会陷入交火。归咎于广告业的黑帽末端。


您需要找到其他方式来向用户显示……无论您想要显示什么……,但不涉及在单独的窗口中同时导航到多个网页。


0
投票

    $(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>


-2
投票

问题是由您使用的 mousedown() 事件引起的,该事件是 down+up 序列的一部分,用于触发

<a>
标签的 click() 事件。

因此打开一个新窗口会“破坏”流程,并且浏览器不再跟踪鼠标松开事件以跟踪原始网址。

因此解决方案是附加 click() 事件而不停止传播。这将触发附加事件和原始事件,并且它们都不会被阻止。

  $(document).ready(function(){
        $("a").click(function(){
            window.open("https://stackoverflow.com/","_blank");
        });
    })

您可以在此页面上尝试示例,因为 stackoverflow 代码片段已被沙盒化并阻止弹出窗口

© www.soinside.com 2019 - 2024. All rights reserved.