Firefox - веб-сайт автоматически переводит меня на новую вкладку, и я не могу ее остановить - PullRequest
0 голосов
/ 01 мая 2020

Итак, у меня есть веб-сайт, где я могу выбрать ссылки и нажать кнопку, чтобы открыть их все одновременно. Когда я делаю это, 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. Но ничего не работает. Когда я открываю ссылки с этого сайта с помощью указанной кнопки c, меня всегда автоматически перенаправляют на одну из недавно открытых вкладок.

Вот аналогичная проблема - i sh - https://www.reddit.com/r/firefox/comments/bnu6qq/opening_new_tab_problem/

Есть идеи, почему это происходит и как это исправить? Я имею в виду, что веб-сайт не должен иметь возможности или разрешения переопределять собственные настройки Firefoxe, верно?

1 Ответ

0 голосов
/ 01 мая 2020

Хорошо, потому что я не хочу быть ослом, вот решение.

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

Это все, ребята:)

...