📜  如何使用用户通过 URL 打开的 JavaScript 关闭窗口?(1)

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

如何使用用户通过 URL 打开的 JavaScript 关闭窗口?

当用户通过 URL 打开网页时,可以使用 JavaScript 代码实现关闭网页窗口的操作。下面我们将介绍如何实现这个操作。

使用 window.close() 方法关闭窗口

在 JavaScript 中,可以使用 window.close() 方法关闭当前窗口。如果该窗口是通过 window.open() 方法打开的,则可以在父窗口中使用该方法关闭该窗口。

以下是一个简单的示例:

<!-- index.html -->
<button onclick="window.open('child.html')">打开子窗口</button>

<!-- child.html -->
<script>
  window.onload = function() {
    // 3 秒后自动关闭窗口
    setTimeout(function() {
      window.close();
    }, 3000);
  };
</script>

该示例中,当用户点击 "打开子窗口" 按钮时,将会打开一个名为 "child.html" 的子窗口。在子窗口中,我们使用了 setTimeout() 方法来设置 3 秒后自动关闭窗口。在这 3 秒中,用户可以对子窗口进行操作。当时间到达时,子窗口将自动关闭。

需要注意的是,该方法只能关闭由当前页面打开的窗口。如果当前页面是由其他页面打开的,例如通过链接或者书签等方式打开的页面,则该方法将无法关闭该窗口。

通过参数传递关闭命令实现关闭窗口

为了解决上述问题,我们可以通过传递参数的方式实现关闭窗口的功能。可以在 URL 的参数中传递一个 "closeWindow" 参数,并设置其值为 "true" ,然后在页面中监听该参数值,当其为 true 时,关闭网页窗口。

以下是一个实现方式:

<!-- index.html -->
<button onclick="window.open('child.html?closeWindow=true')">打开子窗口并自动关闭</button>

<!-- child.html -->
<script>
  // 获取 URL 参数
  function getParameterByName(name, url = window.location.href) {
    name = name.replace(/[\[\]]/g, '\\$&');
    const regex = new RegExp(`[?&]${name}(=([^&#]*)|&|#|$)`);
    const results = regex.exec(url);
    if (!results) return null;
    if (!results[2]) return '';
    return decodeURIComponent(results[2].replace(/\+/g, ' '));
  }

  window.onload = function() {
    if (getParameterByName('closeWindow')) {
      window.close();
    }
  };
</script>

该示例中,我们通过将 "closeWindow" 参数设置为 true ,并将其作为 URL 的一部分传递给子页面。在子页面中,我们使用 getParameterByName() 函数获取 URL 中的参数,并判断其值是否为 true ,如果为 true 则自动关闭页面。

结论

通过以上两种方式,可以实现通过 URL 打开的 JavaScript 关闭窗口的功能。需要注意的是,在使用第一种方式时,需要保证当前页面是由该页面打开的,否则将无法关闭窗口。在使用第二种方式时,需要处理好 URL 参数的传递和解析,以保证程序正确执行。