我想从 JavaScript 关闭 Firefox 选项卡。请不要误解我的意思。我不是要关闭弹出窗口而是选项卡。我知道 JavaScript 不能关闭它没有打开的窗口。因此我尝试了下面的代码,但它适用于所有浏览器,但不适用于 Firefox。
window.open('','_self','');
Window.close();
我想从 JavaScript 关闭 Firefox 选项卡。请不要误解我的意思。我不是要关闭弹出窗口而是选项卡。我知道 JavaScript 不能关闭它没有打开的窗口。因此我尝试了下面的代码,但它适用于所有浏览器,但不适用于 Firefox。
window.open('','_self','');
Window.close();
如果您有一个单/少用户页面并且您可以访问 Firefox,您可以更改about:config
设置。
dom.allow_scripts_to_close_windows = true
这可能是一个很大的安全问题!
(在 Linux 上使用 Firefox 27 测试)
这是我从 StackOverflow 线程中学到的东西(不幸的是找不到它来链接到这个答案):
window.open(document.URL,'_self','resizable=no,top=-245,width=250,height=250,scrollbars=no');
window.close();
这将关闭窗口/选项卡。它可以被描述为黑客。本质上,它欺骗浏览器认为当前窗口是由 JavaScript 打开的窗口/选项卡。因为规则似乎是 JavaScript 可以关闭由 JavaScript 打开的窗口。
它适用于 Chrome、Firefox。Internet Explorer 需要一些额外的处理来解释自 IE 6 到 IE 8+ 以来的不同行为。如果有人感兴趣,我也包括在内。
var Browser = navigator.appName;
var indexB = Browser.indexOf('Explorer');
if (indexB > 0) {
var indexV = navigator.userAgent.indexOf('MSIE') + 5;
var Version = navigator.userAgent.substring(indexV, indexV + 1);
if (Version >= 7) {
window.open('', '_self', '');
window.close();
}
else if (Version == 6) {
window.opener = null;
window.close();
}
else {
window.opener = '';
window.close();
}
}
else {
window.close();
}
你可以试试这段代码。如果是火狐浏览器。
gBrowser.removeCurrentTab();
根据 Mozilla Firefox 开发者论坛,现在不可能。参见下文。
“过去,当您直接调用窗口对象的 close() 方法,而不是在窗口实例上调用 close() 时,浏览器会关闭最前面的窗口,无论您的脚本是否创建了那个窗口。现在情况不再如此; 出于安全原因,不再允许脚本关闭它们没有打开的窗口。(Firefox 46.0.1:脚本不能关闭窗口,它们没有打开)"