Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 关闭另一个选项卡/窗口_Javascript_Html_Firefox_Browser_Tabs - Fatal编程技术网

Javascript 关闭另一个选项卡/窗口

Javascript 关闭另一个选项卡/窗口,javascript,html,firefox,browser,tabs,Javascript,Html,Firefox,Browser,Tabs,我有3个html页面。第1页链接到第2页,第2页链接到第3页(为简单起见) 我希望第2页中的链接打开第3页并关闭第1页(选项卡1) 据我所知,你不能用Javascript关闭一个没有用Javascript打开的页面,这就是我被卡住的地方 我尝试了在网上找到的各种代码,但看起来越来越有可能这是不可能的。有没有其他方法可以让我专注于一个已经打开的标签页,或者人们可能会觉得对我有用的东西 第1页是主网页,但在点击第2页的链接后,我真的希望能够将注意力集中在第1页-传递数据。。。。我知道这与我上面所说的

我有3个html页面。第1页链接到第2页,第2页链接到第3页(为简单起见)

我希望第2页中的链接打开第3页并关闭第1页(选项卡1)

据我所知,你不能用Javascript关闭一个没有用Javascript打开的页面,这就是我被卡住的地方

我尝试了在网上找到的各种代码,但看起来越来越有可能这是不可能的。有没有其他方法可以让我专注于一个已经打开的标签页,或者人们可能会觉得对我有用的东西


第1页是主网页,但在点击第2页的链接后,我真的希望能够将注意力集中在第1页-传递数据。。。。我知道这与我上面所说的是矛盾的,但我只是想用这3个页面来测试window.close()等等…

正如您所说,无法关闭未使用window.open打开的选项卡。也许您可以显示某种消息或覆盖,以建议用户移动选项卡

假设您的所有选项卡都在同一个域中,您可以尝试使用共享web worker来检测哪些页面当前处于活动状态/


注意:跨浏览器支持对共享web工作人员来说不是很好。

是的,这是不可能的,如果网页可以随机关闭其他页面,那将是非常糟糕的。
如果只是为自己而不是为他人发布,那么制作一个浏览器扩展可能是一个不错的选择。

假设您的第一页是first.html:

<!DOCTYPE html>
<html>

<head>
    <title>
        First Page
    </title>
</head>

<body>
    <button onclick="openWin()">Open Second Page</button>
    <div>
        This is first page
    </div>
    <script>
        var myWindow;

        function openWin() {
            myWindow = window.open("second.html");
        }
    </script>

</body>

</html>

首页
打开第二页
这是第一页
var-myWindow;
函数openWin(){
myWindow=window.open(“second.html”);
}
现在,您的第二个页面是second.html:

<!DOCTYPE html>
<html>

<head>
    <title>
        Second Page
    </title>
</head>

<body>

    <button onclick="openWin()">Open Third Page & Close First Page</button>
    <div>
        This is second page
    </div>
    <script>
        var myWindow;

        function openWin() {
            myWindow = window.open("third.html");
            window.opener.close()
        }
    </script>
</body>

</html>

第二页
打开第三页并关闭第一页
这是第二页
var-myWindow;
函数openWin(){
myWindow=window.open(“third.html”);
window.opener.close()
}
最后,您的第三个页面可能看起来像third.html:

<!DOCTYPE html>
<html>
<head>
    <title>Third page</title>
</head>

<body>
    This is third page
</body>

</html>

第三页
这是第三页
这应该行得通。试试这个

写在(他们的)重点上

只能在脚本使用
Window.open()
方法打开的窗口上调用此方法。如果窗口不是由脚本打开的,则控制台中会出现与此类似的错误:
脚本可能无法关闭非由脚本打开的窗口。


因此,如果您的页面1不是由JavaScript打开的,那么无论如何都无法用JS关闭它。我不知道有什么办法可以绕过它。

这并没有关闭第1页,是吗?!为什么不呢?你必须打开第一页。然后单击“打开第二页”将打开第二页。然后你可以点击“打开第三页并关闭第一页”,这样它就可以工作了。请注意,您的第二页无法单独打开。必须从第一页开始通过单击按钮打开。但是第一个页面不是用javascript打开的,因此不能用javascript关闭。或者我遗漏了什么?您不需要使用javascript打开第一页。您可以独立打开此文件。只需单击按钮,确保已从第一页打开第二页。然后点击第二页的按钮将关闭第一页并打开第三页。查看此gif以获得许可。是的,这在chrome中确实有效,但在Firefox中不起作用。谢谢你的主意。