📅  最后修改于: 2023-12-03 15:25:36.225000             🧑  作者: Mango
在JavaScript中,弹出窗口是一个常见的交互方式,可用于显示警告、错误、消息等。通常,弹出窗口会覆盖在当前页面之上,并且一旦被关闭,用户就会回到之前的页面。但有时候,我们需要在当前页面之前打开一个弹出窗口,使用户能够在前一页中继续操作。为此,可以使用JavaScript中的窗口对象(Window Object)。
在学习 JavaScript 中的窗口对象之前,需要了解以下基本概念:
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()
函数将从弹出窗口中获取填写的数据,并将其传递回当前页面,然后关闭弹出窗口。
在实际开发中,根据需要自定义和修改代码以满足不同的需求。