【问题标题】:How to close browser tab如何关闭浏览器选项卡
【发布时间】:2015-12-27 23:26:58
【问题描述】:

我无法使用 javascript 关闭当前浏览器选项卡。

我试过了-

    window.close(); //1

    window.open("", '_self');//2
    setTimeout(function(){
        window.close();
    },100);

    window.open('','_parent',''); //3
    window.close();

    window.top.opener=null; //4
    window.close();

chrome 中没有什么对我有用

【问题讨论】:

  • 你能详细说明更多细节或小提琴......因为window.close()适用于所有情况
  • 我不敢打赌 javascript 总是可以关闭标签,因为它很可能与浏览器安全设置相关联。

标签: javascript jquery


【解决方案1】:

window.close 方法只允许被脚本使用 window.open 方法打开的窗口调用。

【讨论】:

  • 这就是我在第二种方法中尝试做的。我通过javascript打开它然后关闭它。
【解决方案2】:

据我所知,您无法使用 Javascript 关闭浏览器选项卡。这不是一种常见的方法......

我不确定你是否可以这样做,因为有些浏览器根本没有任何选项卡...

但是试试这个,可能对你有用:

window.top.close();

参考:Another Question in stackoverflow

或:

<a href="javascript:window.open('','_self').close();">close</a>

【讨论】:

  • 你在哪里使用这个?检查您的触发器是否正常...要求 javascript 创建一个 alert 或在您想使用它的地方使用 console.log...
【解决方案3】:

您只能关闭自己创建的窗口/选项卡。也就是说,您不能以编程方式关闭用户创建的窗口/选项卡。

例如,如果您使用window.open() 创建一个窗口,您可以使用window.close() 关闭它。

【讨论】:

    【解决方案4】:

    请尝试使用以下

    window.top.close();
    

    希望,这会有所帮助!

    【讨论】:

      【解决方案5】:

      如前所述,您只能关闭之前自己打开的窗口/选项卡。你的代码 sn-ps 都不符合这个。

      如果您想从其父窗口关闭子窗口,您需要存储对它的引用,例如:

      var child = window.open("");
      setTimeout(function(){
          child.close();
      },100);
      

      Demo

      如果你想从自身关闭子窗口,你需要在窗口内运行代码。

      如果您用空白文件覆盖当前文档,您的代码就会消失。


      现在,Chrome 是一种特殊的野兽。它在不同的进程中打开每个选项卡。这意味着涉及不同选项卡的几种好的旧技术根本不起作用。例如,你甚至不能使用 window.open() 中的 target 参数来共享一个窗口。

      【讨论】:

      • 我想关闭同一个窗口。在我的代码中,我试图打开同一个窗口,然后通过 javascript 关闭它。
      【解决方案6】:
      <script src="~/Scripts/jquery-1.8.2.js"></script>
      <script>
          var win;
          $(document).ready(function () {
              var url = 'this tab url';
              win = window.open(url, '_self');
              window.stop();                
          });
          function closeWindow() {
              win.close();
          }
      </script>
      

      然后在html中

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

      如果有多个象牙要加载,那么请等待一段时间

      setTimeout(
        function() 
        {
          //do something special
         //window.stop(); 
        }, 5000);
      

      【讨论】:

      • 我不想在点击时关闭标签。它应该在没有用户交互的情况下发生。
      【解决方案7】:
      window.open('', '_self', '').close();
      

      thread上查看我的原始答案

      【讨论】:

        猜你喜欢
        • 2013-07-19
        • 1970-01-01
        • 2013-08-16
        • 1970-01-01
        • 2012-09-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-11
        相关资源
        最近更新 更多