📜  当前页面前的弹出窗口 - Javascript (1)

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

当前页面前的弹出窗口 - Javascript

在JavaScript中,弹出窗口是一个常见的交互方式,可用于显示警告、错误、消息等。通常,弹出窗口会覆盖在当前页面之上,并且一旦被关闭,用户就会回到之前的页面。但有时候,我们需要在当前页面之前打开一个弹出窗口,使用户能够在前一页中继续操作。为此,可以使用JavaScript中的窗口对象(Window Object)。

前置知识

在学习 JavaScript 中的窗口对象之前,需要了解以下基本概念:

  • JavaScript 中的文档对象模型(DOM)
  • HTML 表单元素
  • 页面 redirect 和 reload
窗口对象

JavaScript 中窗口对象有两种:当前窗口和打开的窗口。当前窗口是指包含当前脚本的窗口。打开的窗口是指通过 JavaScript window.open() 方法打开的窗口。

打开新窗口

window.open(url, name, features, replace)

该方法接受四个可选参数:

  • url:要在新窗口中打开的URL。
  • name:窗口的名称。可以是任何字符串,但不能包含空格或符号。
  • features:窗口的特性(大小、位置、工具栏等)。
  • replace:如果为 true,则加载 url 的页面会替换打开窗口的历史记录中的当前条目。如果为 false(默认值),则在历史记录中添加一个新的条目。

以下是一个使用 window.open() 方法打开新窗口的例子:

function openWindow() {
  window.open("https://www.example.com", "example", "width=500,height=500");
}

关闭窗口

要关闭当前窗口,使用 window.close()

function closeWindow() {
  if (confirm("Are you sure you want to close this window?")) {
    window.close();
  }
}

注意:只有通过 JavaScript window.open() 方法打开的窗口才能通过 window.close() 方法关闭。在浏览器中直接打开的窗口(例如,用户单击链接打开的窗口)不能通过 window.close() 关闭。

示例

以下是一个完整的例子,在当前页面之前打开一个窗口,并在该窗口中填写表单。这个窗口可以在后续的页面跳转中不受影响地保留下来,直到用户手动关闭。

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>Popup Window Example</title>
</head>
<body>
  <form>
    <label for="name">Name:</label>
    <input type="text" id="name" name="name"><br><br>
    <label for="email">Email:</label>
    <input type="email" id="email" name="email"><br><br>
    <button onclick="openPopup()">Open Popup</button>
  </form>
  <script>
    let popup;
    
    function openPopup() {
      const url = "https://www.example.com/popup.html";
      const name = "popup";
      const features = "width=300,height=300";
      popup = window.open(url, name, features);
    }

    function sendData() {
      const name = popup.document.getElementById("popup-name").value;
      const email = popup.document.getElementById("popup-email").value;
      document.getElementById("name").value = name;
      document.getElementById("email").value = email;
      popup.close();
    }
  </script>
</body>
</html>

在上面的代码中,当用户单击按钮时,openPopup() 函数将打开一个新窗口。该窗口中包含了一个表单,用户可以在其中输入姓名和电子邮件地址。当用户在窗口中填写完表单后,单击窗口中的“Submit”按钮,sendData() 函数将从弹出窗口中获取填写的数据,并将其传递回当前页面,然后关闭弹出窗口。

在实际开发中,根据需要自定义和修改代码以满足不同的需求。