当前位置: 首页 > 知识库问答 >
问题:

Firefox-WebSite自动带我进入新选项卡,但我无法阻止它

尉迟鸿熙
2023-03-14

所以我有一个网站,在那里我可以选择链接和点击一个按钮打开他们所有的同时。当我这样做时,Firefox会自动带我到一个新打开的链接。

我想阻止这种行为,于是我找了又找,最终找到了这个选项:

Browser.Tabs.LoadDivertedIn

现在,当我将此设置为true时,新打开的选项卡不会自动带我访问它们。所以,如果我点击一个网站上的广告,通常在一个新的标签打开,并带我去它,现在它不会发生。我也试过这段代码:

<p><a href="#" onclick="window.open('http://google.com');
window.open('http://yahoo.com');">Click to open Google and Yahoo</a></p>

此代码同时打开2个链接。我在想,也许同时打开多个链接会以某种方式覆盖Firefox。但是没有,链接打开了,我没有自动进入任何一个新的选项卡。

还必须指出的是,我在Firefox75和74中遇到了这个问题。但是当我在Firefox55.0.2中尝试时,我就没有这个问题了。在Firefox55.0.2中,“Browser.Tabs.LoadDivertedInBackground”实际上甚至在我有问题的网站上也能工作(我不能共享该站点,因为它在登录之后)。

这似乎是负责在我有问题的网站上打开多个链接的代码:

            $(document).on('click', '.statbtn', function () {
            var me = $(this);
            var isAnyRowSelected = false;
            $('.row-checkbox').each(function () {
                var t = $(this);
                if (t.is(':checked')) {
                    isAnyRowSelected = true;
                    $('select[name="status[' + t.val() + ']"]').val(me.attr('id'));
                }
            });
            if(isAnyRowSelected == false){
                bootbox.alert("No Orders Selected");
            }
        });
        $(document).on('click', '.openlink', function () {
            var me = $(this);
            var isAnyRowSelected = false;
            $($('.row-checkbox').get()).each(function () {
                var t = $(this);
                if (t.is(':checked')) {
                    isAnyRowSelected = true;
                    console.log();
                    var win = window.open(t.data('link'), '_blank');
                    if (win) {
                        win.focus();
                    } else {
                        bootbox.alert('Please allow popups for this website');
                    }                        
                }
            });

所以我想尽一切办法。对about:config的许多更改,重新启动我的浏览器,取消在Firefox中的“当你打开一个新选项卡中的链接时,立即切换到它”选项的勾选。但什么都不起作用。当我打开链接从这个网站使用这个特定的按钮,我总是得到自动采取一个新打开的标签。

这里有一个类似的问题-https://www.reddit.com/r/firefox/comments/bnu6qq/opening_new_tab_problem/

有什么想法为什么会发生这种情况和如何解决它吗?我的意思是,一个网站不应该能够或者允许覆盖Firefoxe的原生设置,对吧?

共有1个答案

茹建茗
2023-03-14

好吧,因为我不想当混蛋,这是解决办法。

            $(document).on('click', '.statbtn', function () {
            var me = $(this);
            var isAnyRowSelected = false;
            $('.row-checkbox').each(function () {
                var t = $(this);
                if (t.is(':checked')) {
                    isAnyRowSelected = true;
                    $('select[name="status[' + t.val() + ']"]').val(me.attr('id'));
                }
            });
            if(isAnyRowSelected == false){
                bootbox.alert("No Orders Selected");
            }
        });
        $(document).on('click', '.openlink', function () {
            var me = $(this);
            var isAnyRowSelected = false;
            $($('.row-checkbox').get().reverse()).each(function () {
                var t = $(this);
                if (t.is(':checked')) {
                    isAnyRowSelected = true;
                    console.log();
                    // var win = window.open(t.data('link'), '_blank');
                    setTimeout(() => window.open(t.data('link'), '_blank'),1000);
                    // if (win) {
                    //     win.focus();
                    // } else {
                    //     bootbox.alert('Please allow popups for this website');
                    // }                        
                }
            });
            if(isAnyRowSelected == false){
                bootbox.alert("No Orders Selected");
            }
        });

基本上,添加一个“setTimeout”就修复了它。出于某种原因,Firefox需要延迟来正确处理事情,我猜,我想。在延迟之前,动作会立即发生,我只是猜测Firefox不能“赶上”它,以便应用不导航到新标签的豁免。但一个超时延迟修复了它。

对于任何可能遇到类似问题的人,还需要在Firefox的“about:config”中进行编辑才能将其设置为true。

Browser.Tabs.LoadDivertedIn

这是所有的人:)

 类似资料:
  • 我正试图更新作曲家没有任何运气! 我所尝试的: [InvalidArgumentExc0019]命令"自我更新"未定义。 [InvalidArgumentExc0019]命令"自我更新"未定义。 读取包裹列表...完成构建依赖树读取状态信息...完成作曲家已经是最新的版本。以下软件包已自动安装,不再需要:libntdb1 linux-Headers-4.2.0-30 linux-Headers-4

  • 我有一个在两个docker容器上运行的应用程序,一个前端(react.js)和一个后端(java、Spring)。 我已经安装并运行了这些容器,可以验证它们是否可以通过ping相互通信。 注意到这个问题后,我研究了一下,发现了一个问题,一个用户gok提供了一些有用的信息和到spring文档的链接,这些信息非常丰富。 在发现问题是CORS问题之前,我已经按照前面问题中的指示将更改应用到后端代码。 因

  • 我在Ubuntu14.04中从事Selenium和Firefox的工作,我通过send_keys(Keys)创建了一个新的选项卡。CONTROL 't '),但是一直在第一个选项卡上发出命令,可能是因为我没有正确地关注新选项卡。 运行此代码时没有错误。 去google.com后,我创建了一个新标签,屏幕在新标签上变成了一个空白页。之后,我编写了driver . switch _ to _ wind

  • 问题内容: 我想更新一个表以指示某些行是其他行的父表,因此我在表中添加了“父代”列。以下查询查找所有父母: 但是当我尝试修改该语法以进行更新时,它不起作用: 我得到: 请注意,第7行第28列是“ SET”行的结尾。 问题答案: Oracle不支持语句中的子句。 用这个:

  • 我无法停止/消除我的不和。js机器人(nodejs-npm)。 并尝试命令:npm stop https://pastebin.com/v41PxTcN