window.open获取子页面window.returnValue的值
时间: 2024-12-11 19:37:19 浏览: 12
在JavaScript中,`window.open()` 方法用于打开一个新的浏览器窗口或者tab,并返回一个表示新窗口的对象,通常称为 `Window` 对象。这个对象可以让你控制新窗口的行为,包括接收来自其本身的通信。
当你想从父页面向新开的子页面传递数据,子页面需要提供一个方法来接收这个数据并可能设置一个回调。一种常见的做法是在子页面中定义一个全局变量或者函数,例如:
```javascript
// 子页面(child.html)
function setReturnValue(data) {
window.returnValue = data;
}
// 或者你可以创建一个特定的对象来保存返回值
let returnValueData = null; // 如果你想将值存储在一个变量里
// 当处理完数据后,调用上面的函数或者改变全局变量
setReturnValue("这是子页面接收到的数据");
```
然后,在父页面通过`window.open()` 获取到子页面的`window` 对象,并尝试访问它的`returnValue`属性或者等待它触发回调:
```javascript
// 父页面(parent.js)
var childWin = window.open("child.html", "childFrame");
// 监听子页面的window.onload事件,当加载完成后尝试读取返回值
childWin.onload = function() {
var result = childWin.returnValue; // 如果有直接赋值给window.returnValue,则可以直接获取
console.log(result);
};
// 或者如果子页面设置了某个函数作为回调
childWin.childCallback = function(data) {
console.log(data);
};
```
请注意,由于同源策略的限制,子页面无法直接修改父页面的`window.returnValue`,反之亦然。这种通信方式仅适用于在同一域内的页面。如果你需要跨域交互,通常需要服务器支持或JSONP等其他技术。
阅读全文