如何关闭浏览器窗口中的当前选项卡?

JavaScript

小卤蛋小宇宙

2020-03-16

我想在网页上创建一个链接,该链接将关闭浏览器中当前活动的选项卡,而不关闭浏览器中的其他选项卡。
当用户单击关闭链接时,将出现一条警告消息,要求用户使用两个按钮“是”和“否”进行确认。如果用户单击“是”,则关闭该页面,如果“否”,则不执行任何操作。

怎么做到呢?有什么建议么?

第1780篇《如何关闭浏览器窗口中的当前选项卡?》来自Winter(https://github.com/aiyld/aiyld.github.io)的站点

7个回答
老丝神奇小胖 2020.03.16

对于仍在访问此页面的人,只允许您关闭由脚本或通过将HTML的定位标记与目标_blank一起使用打开的选项卡。这两个都可以使用

<script>
    window.close();
</script>
Sam卡卡西 2020.03.16
<button class="closeButton" style="cursor: pointer" onclick="window.close();">Close Window</button>

这为我做了工作

阳光小卤蛋 2020.03.16

有点晚了,但这就是我发现的...

window.close()仅当您尝试close()使用window.open()方法的脚本打开了您尝试打开的窗口时,IE才起作用

!(请参阅下面@killstreet关于目标_blank的锚标记的评论)

TLDR:chrome和firefox允许关闭它们。

您将收到控制台错误:脚本可能无法关闭脚本未打开的窗口。作为错误,仅此而已。

您可以在URL中添加一个唯一参数,以了解是否从脚本中打开了页面(例如时间)- 但它只是一个hack,而不是本机功能,在某些情况下失败

我找不到任何方法可以知道该页面是否通过open()打开,并且关闭不会引发错误。 这不会打印 “测试”:

try{
  window.close();
}
catch (e){
  console.log("text");
}

您可以在MDN中阅读更多有关close()函数的信息

猪猪Itachi 2020.03.16

以下内容适用于Chrome 41:

function leave() {
  var myWindow = window.open("", "_self");
  myWindow.document.write("");
  setTimeout (function() {myWindow.close();},1000);
}

我为FF尝试了几种想法,包括打开实际的网页,但似乎没有任何效果。据我了解,如果JS 确实打开了任何浏览器,则任何浏览器都会使用xxx.close()关闭标签或窗口,但是至少FF不能通过在该标签内打开新内容来欺骗FF。

当您考虑时,这很有意义-用户可能不希望JS关闭具有有用历史记录的选项卡或窗口。

路易西门 2020.03.16

也尝试一下。在所有三种主要浏览器上为我工作。

<!-- saved from url=(0014)about:internet -->
<a href="#" onclick="javascript:window.close();opener.window.focus();" >Close Window</a>
SamItachi 2020.03.16

有可能的。我为此搜索了整个网络,但是当我参加了微软的一项调查时,我终于得到了答案。

尝试这个:

window.top.close();

这将为您关闭当前选项卡。

蛋蛋猴子 2020.03.16

据我所知,Chrome或FireFox不再支持。在IE中(至少在Edge之前)仍然可能。

问题类别

JavaScript Ckeditor Python Webpack TypeScript Vue.js React.js ExpressJS KoaJS CSS Node.js HTML Django 单元测试 PHP Asp.net jQuery Bootstrap IOS Android