JavaScript - 关闭标签页

8

通过JavaScript关闭选项卡是否可能?

例如,我已经从电子邮件重定向用户到我的页面,然后我需要打开弹出窗口并关闭我重定向用户到的选项卡。

window.close()仅适用于使用JavaScript创建的窗口吗?或者是否可能修改选项卡,使其成为弹出窗口?


可能是重复的问题:如何关闭浏览器窗口中的当前标签页? - om-nom-nom
7个回答

8

window.close() 只能关闭在 JavaScript 中创建的窗口吗?

window.close 也应该适用于使用 target="_blank" 创建的新窗口。除此之外,没有其他方法可以编程地关闭当前窗口或选项卡。据我所知,您想要做的 - 关闭您没有打开的原始窗口 - 是不可能的。


所以基本上我会打开一个空窗口,用户需要手动关闭它? - Somebody
@Beck 如果你打开了窗户,你应该能够关闭它。如果你没有打开它,你就不能关闭它。 - Pekka
是的,我明白了。我在说邮件中的链接。用户首先会点击它,加入我的网站页面,然后在那个页面上,JavaScript 将创建一个新的弹出窗口。并且初始页面用户将需要手动关闭。 - Somebody
@Beck 不行,那样做不起作用。从你的电子邮件打开的链接是在你的控制范围之外的。 - Pekka

2

不可以。你只能控制在父窗口内创建的子窗口。

“是否可以修改选项卡,使其变成弹出窗口?”只有当你可以访问创建该选项卡的页面时才可以。


1

这可能有点老,但我们还是来回答一下吧。

我使用 top.close() 来关闭一个标签页。

window.close() 或其他的 open...close 对我没有用。

在 Chrome 中也可以使用 top.close()。


0

在Firefox 26中无法工作。我刚在控制台中测试了它。 - ShoeMaker

0

我曾经遇到过同样的问题,解决方法如下:

let win = window.open(null, "_self");
win.close();

1
请添加描述。 - Joey Pinto
我需要关闭当前标签页。我尝试了其他答案提供的方法,但它们都没有起作用。然后我考虑将当前标签页放入一个变量中,然后关闭它。但是我尝试了"location"而不是"null",结果成功了。 - Cleverson Ruas

0
如果用户已经配置了浏览器将弹出窗口打开为选项卡,那么您将会得到这种行为。
在其他方面,我认为这是不可能的...

0

我不知道我是否理解:

你通过电子邮件发送一个链接。链接需要打开一个弹出窗口,显示你的网页吗?如果是这样,只需使发送的链接在新窗口中打开... 这将避免使用JavaScript带来的许多麻烦...


1
你会怎么做?Gmail不允许在邮件中使用JavaScript。 - Somebody

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