如何关闭浏览器标签页

3
我是一位能翻译文本的助手。

我无法使用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();

在谷歌浏览器中什么都不起作用


你能详细说明一下或者尝试一下吗?因为window.close()在所有情况下都有效。 - Ashish_B
1
我不敢打赌 JavaScript 总是可以关闭选项卡,因为它很可能与浏览器安全设置相关。 - planetmaker
6个回答

14

window.close 方法只能用于由脚本使用 window.open 方法打开的窗口。


2
这就是我在第二个方法中尝试做的事情。我通过JavaScript打开它,然后关闭它。 - Shubham

6
window.open('', '_self', '').close();

请查看我在此线程上的原始答案


1
据我所知,使用Javascript无法关闭浏览器选项卡。这不是常规操作方式...
我不确定你是否能够做到这一点,因为有些浏览器根本没有选项卡...
但可以尝试一下,也许会对你有帮助:
window.top.close();

参考资料: 另一个stackoverflow问题

或者:

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

你在哪里使用这个?检查一下你的触发器是否正常... 在需要使用它的地方,可以请求JavaScript制作一个alert或使用console.log,例如... - Kiyarash

0

你只能关闭自己创建的窗口/标签页。也就是说,你不能以编程方式关闭用户创建的窗口/标签页。

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


0

如前所述,您只能关闭自己先前打开的窗口/选项卡。 您的任何代码片段都不符合此要求。

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

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

演示

如果您想从子窗口中关闭它本身,您需要在该窗口内运行代码。

如果您用空白文档覆盖当前文档,则您的代码将消失。


现在,Chrome是一个特殊的存在。它会为每个标签页打开一个不同的进程。这意味着一些旧的技术在涉及到不同的标签页时根本无法使用。例如,您甚至不能使用window.open()中的target参数来共享一个窗口。


我想关闭同一个窗口。在我的代码中,我试图通过JavaScript打开同一个窗口,然后将其关闭。 - Shubham

0
<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);

我不想在点击时关闭选项卡。它应该在没有用户交互的情况下发生。 - Shubham

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接