Firefox-网站会自动将我带到新选项卡,但我无法停止它

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

因此,我有一个网站,可以在其中选择链接并单击一个按钮以同时打开所有链接。当我这样做时,Firefox会自动将我带到新打开的链接之一。

我想停止这种行为,所以我看了看,最终找到了这个选项:

browser.tabs.loadDivertedInBackground

现在,当我将其设置为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。但是,没有,链接打开了,并且没有自动将我带到任何新选项卡。

还必须说我在Firefox 75和74中遇到这个问题。但是当我在Firefox 55.0.2中尝试它时,我没有问题。在Firefox 55.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的本机设置,对吗?

javascript firefox browser tabs
1个回答
0
投票

好吧,因为我不想成为一个混蛋,这是解决方案。

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

这就是所有人:)

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