📜  如何在 js 中返回旧选项卡关闭新选项卡 - Javascript (1)

📅  最后修改于: 2023-12-03 15:38:18.753000             🧑  作者: Mango

如何在 JavaScript 中返回旧选项卡关闭新选项卡

在一些 Web 应用程序中,我们可能需要在打开新选项卡时关闭旧选项卡。这可以通过 JavaScript 实现。具体来说,我们需要使用 window.open() 和 window.close() 方法。

打开新选项卡

我们可以使用 window.open() 方法打开一个新选项卡。该方法需要两个参数:要打开的 URL 和选项。例如:

var newTab = window.open('https://www.google.com', '_blank');

上面的代码将在新选项卡中打开 Google 搜索页面,并将返回新选项卡的 window 对象。

关闭旧选项卡

我们可以使用 window.close() 方法关闭当前选项卡。例如:

window.close();

但是,这将直接关闭当前选项卡,而不会返回旧选项卡。为了在关闭当前选项卡时返回旧选项卡,我们需要进行以下操作:

  • 在旧选项卡中打开新选项卡,并保留旧选项卡的 window 对象。
  • 在新选项卡中通过 window.opener 获取旧选项卡的 window 对象。
  • 在新选项卡中使用 window.close() 方法关闭当前选项卡,并在关闭时执行旧选项卡的 JavaScript 方法。

下面是示例代码:

// 在旧选项卡中打开新选项卡
var oldTab = window;
var newTab = window.open('https://www.google.com', '_blank');

// 在新选项卡中获取旧选项卡的 window 对象
var oldTabWindow = newTab.opener;

// 在新选项卡中关闭当前选项卡
window.close();

// 在关闭时执行旧选项卡中的 JavaScript 方法
oldTabWindow.doSomething();

在上面的代码中,我们首先在旧选项卡中打开新选项卡,并将旧选项卡的 window 对象存储在变量 oldTab 中。然后,我们在新选项卡中通过 window.opener 获取旧选项卡的 window 对象,并将其存储在变量 oldTabWindow 中。

接下来,我们在新选项卡中使用 window.close() 方法关闭当前选项卡。在关闭时,我们可以执行旧选项卡中的 JavaScript 方法,例如调用 doSomething() 方法。

注意事项

需要注意的是,浏览器中对强制关闭选项卡的限制可能会影响此方法。例如,在 Chrome 浏览器中,用户需要先设置允许强制关闭标签页选项,才能正常使用该方法。此外,由于用户体验的原因,建议仅在需要时使用此方法。