window.open 父画面给子画面传值
时间: 2023-11-18 15:07:22 浏览: 34
可以使用 `window.opener` 属性获取父窗口对象,然后通过该对象调用父窗口中的方法或属性来传递值。
在父窗口中,定义一个函数来接收子窗口传递的值:
```html
<!-- 父窗口 -->
<script>
function setValue(value) {
console.log(value); // 输出子窗口传递的值
}
</script>
```
在子窗口中,使用 `window.opener` 属性获取父窗口对象,并调用 `setValue` 函数来传递值:
```html
<!-- 子窗口 -->
<script>
var value = '这是子窗口传递的值';
window.opener.setValue(value);
</script>
```
这样就可以在父窗口中接收到子窗口传递的值了。请注意,使用 `window.opener` 属性需要在同源的情况下才能成功获取父窗口对象。如果子窗口和父窗口不在同一个域名下,这种方式可能会失败。
相关问题
window.open父子画面传值
可以通过以下步骤实现父子页面之间的传值:
1. 在父页面中使用 `window.open` 方法打开子页面,并保存子页面的对象引用。
```javascript
var childWindow = window.open("child.html");
```
2. 在子页面中使用 `opener` 属性获取父页面的对象引用,并调用它的方法传递数据。
```javascript
opener.receiveData(data);
```
3. 在父页面中定义 `receiveData` 方法接收子页面传递的数据。
```javascript
function receiveData(data) {
// 处理传递的数据
}
```
完整的代码示例:
父页面:
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>父页面</title>
</head>
<body>
<button onclick="openChild()">打开子页面</button>
<script>
var childWindow;
function openChild() {
childWindow = window.open("child.html");
}
function receiveData(data) {
console.log("收到子页面传递的数据:" + data);
}
</script>
</body>
</html>
```
子页面:
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>子页面</title>
</head>
<body>
<button onclick="sendData()">传递数据给父页面</button>
<script>
function sendData() {
var data = "Hello, parent!";
opener.receiveData(data);
}
</script>
</body>
</html>
```
window.open向子画面传参数
可以使用 JavaScript 的 window.open() 方法打开一个新窗口,并通过 URL 传递参数。例如:
```
var myParam = 'Hello World!';
window.open('child.html?param=' + myParam, '_blank');
```
在子窗口中,可以使用 JavaScript 的 location.search 属性获取 URL 中的参数。例如:
```
var urlParams = new URLSearchParams(window.location.search);
var myParam = urlParams.get('param');
console.log(myParam); // 输出 "Hello World!"
```
注意,URL 参数需要进行编码以防止出现特殊字符。可以使用 JavaScript 的 encodeURIComponent() 方法进行编码。例如:
```
var myParam = 'Hello, World!';
var encodedParam = encodeURIComponent(myParam);
window.open('child.html?param=' + encodedParam, '_blank');
```
在子窗口中,需要使用 decodeURIComponent() 方法进行解码。例如:
```
var urlParams = new URLSearchParams(window.location.search);
var encodedParam = urlParams.get('param');
var myParam = decodeURIComponent(encodedParam);
console.log(myParam); // 输出 "Hello, World!"
```