代码之家  ›  专栏  ›  技术社区  ›  Naveed

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

  •  362
  • Naveed  · 技术社区  · 15 年前

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

    怎么做?有什么建议吗?

    11 回复  |  直到 6 年前
        1
  •  428
  •   Rublacava    8 年前

    您将需要JavaScript来完成此操作。使用 window.close() :

    close();
    

    注: 当前选项卡是隐含的。这相当于:

    window.close();
    

    或者可以指定其他窗口。

    所以:

    function close_window() {
      if (confirm("Close Window?")) {
        close();
      }
    }
    

    用HTML:

    <a href="javascript:close_window();">close</a>
    

    或:

    <a href="#" onclick="close_window();return false;">close</a>
    

    return false 此处可防止事件的默认行为。否则,浏览器将尝试转到该URL(显然不是)。

    现在的选项 window.confirm() 对话框将是“确定”和“取消”(不是“是”和“否”)。如果你 真正地 想要“是”和“否”,您需要创建某种模式的javascript对话框。

    注: 与上面的不同之处在于浏览器。如果用javascript打开窗口(通过 window.open() )然后您可以使用javascript关闭窗口。火狐不允许你关闭其他窗口。我相信IE会要求用户确认。其他浏览器可能有所不同。

        2
  •  226
  •   Daniel Shen    11 年前

    试试这个

    <a href="javascript:window.open('','_self').close();">close</a>
    
        3
  •  64
  •   Palesz    12 年前

    这种方法适用于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>
    
        4
  •  22
  •   Guy Schalnat    9 年前

    据我所知,它在Chrome或火狐中已经不可能存在了。在IE中仍然可以(至少是预边缘)。

        5
  •  16
  •   user3239333    10 年前

    这是可能的。我搜索了整个网络,但有一次当我接受微软的调查时,我终于得到了答案。

    试试这个:

    window.top.close();
    

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

        6
  •  6
  •   Julesfrog    11 年前

    在FF 18和Chrome 24中成功测试:

    插入头:

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

    HTML:

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

    学分到 Marcos J. Drake .

        7
  •  6
  •   Leniel Maccaferri    9 年前

    也试试这个。在所有三个主要浏览器上为我工作。

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

    在Chrome41中,以下功能适用于我:

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

    我尝试过一些关于FF的想法,包括打开一个实际的网页,但似乎没有什么效果。据我所知,任何浏览器都会用xxx.close()关闭一个选项卡或窗口 真正地 由JS打开,但至少FF不能通过在该选项卡中打开新内容来关闭选项卡。

    当你想到它的时候,这是有意义的——用户可能不希望JS关闭一个有有用历史记录的选项卡或窗口。

        9
  •  0
  •   Community Mr_and_Mrs_D    10 年前

    这是解决相同问题的一种方法,声明这样的javascript函数

    <script>
      function Exit() {
         var x=confirm('Are You sure want to exit:');
         if(x) window.close();
       }
    </script>
    

    将以下行添加到HTML以使用 <button>

    <button name='closeIt' onClick="Exit()" >Click to exit </Button>
    
        10
  •  0
  •   calios    6 年前

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

    window.close() 只有当你试图打开的窗口 close() 由脚本使用window.open()方法打开。

    您将得到控制台错误: 脚本不能关闭未由脚本打开的窗口。 作为一个错误,没有别的。

    您可以在URL中添加一个唯一的参数,以了解页面是否是从脚本(如time)打开的- 但这只是一个黑客 不是本机功能,而是 失败 在某些情况下。

    我找不到任何方法来知道页面是否是从open()打开的, 关闭不会引发错误。 这个不能打印 “测试”:

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

    你可以阅读 in MDN more about the close() function

        11
  •  -2
  •   Diego    12 年前

    以下是创建此类链接的方法:

    <a href="javascript:if(confirm('Close window?'))window.close()">close</a>