首页 > 解决方案 > 用我的脚本没有打开的 js 关闭一个标签

问题描述

我正在开发一个使用 https、express、nodeJS 网络服务器向用户提供网页的应用程序。当用户点击“start.bat”时,节点服务器启动,浏览器打开到 localhost。目前,用户必须 CTRL + W 浏览器和 CTRL + C 服务器来关闭应用程序。我想实现一个系统,当按下 ESC 时,关闭服务器并退出当前选项卡。目前,我有一个系统可以在按下 ESC 时将用户重定向到 localhost/shutdown。NodeJS 有一个 /shutdown 端点,它为用户 public/shutdown.html 提供服务,然后在 2 秒后退出进程。

app.get(
  "/shutdown",
  (req, res, next) => {
    res.sendFile(path.join(rootDir + "/public/shutdown.html"));
    next();
  },
  () => {
    setTimeout(() => {
      process.exit();
    }, 2000);
  }
); 

现在,我需要做的就是在服务器正确关闭后关闭 localhost/shutdown 选项卡。经过一番快速搜索后,我找到了 window.close() 函数——由于一个安全补丁,该函数不再能够关闭任何选项卡。果然,我得到了Scripts may close only the windows that were opened by them错误,从而结束了我短暂的希望,即我找到了摆脱困境的简单方法。我试图让 nodeJS 打开一个新的 index.html,然后它会打开游戏的弹出选项卡。这将使我能够使用 (newtab).close() 退出弹出选项卡,因为它是我的脚本打开它。我意识到,即使我能够关闭这个新标签,我也会一直打开一个原始标签,因为我的脚本没有打开它。如果有人对解决此问题的方法有任何想法,我将不胜感激。

谢谢!

标签: node.jstabs

解决方案


推荐阅读