因此,我有一个网站,可以在其中选择链接并单击一个按钮以同时打开所有链接。当我这样做时,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的本机设置,对吗?
好吧,因为我不想成为一个混蛋,这是解决方案。
$(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
这就是所有人:)