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

怎样才能做到呢?有什么建议吗?


当前回答

据我所知,在Chrome或FireFox中已经不可能了。这在IE中仍然是可能的(至少在edge之前)。

其他回答

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

这对我来说很有效

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

window.close()将只工作(IE是一个例外)当你试图关闭()的窗口是由脚本使用window.open()方法打开的。

(请参阅下面@killstreet关于target _blank的锚标签的评论)

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

你会得到控制台错误: 脚本不能关闭非脚本打开的窗口。 只是一个错误而已。

你可以在URL中添加一个唯一的参数来知道页面是否从脚本打开(比如时间)-但这只是一个黑客,而不是一个本地功能,在某些情况下会失败。

我找不到任何方法知道页面是否从open()打开, 并且close不会抛出和错误。 这将不会打印"test":

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

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

在FF 18和Chrome 24测试成功:

插入头部:

<script>
    function closeWindow() {
        window.open('','_parent','');
        window.close();
    }
</script> 

HTML:

<a href="javascript:closeWindow();">Close Window</a>

感谢马科斯·j·德雷克。

试试这个吧。在三个主要浏览器上都为我工作。

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

此方法适用于Chrome和IE:

<a href="blablabla" onclick="setTimeout(function(){var ww = window.open(window.location, '_self'); ww.close(); }, 1000);">
    If you click on this the window will be closed after 1000ms
</a>