window.addEventListener写在共同中返回值给父画面
时间: 2023-10-18 16:10:34 浏览: 97
在共同的窗口中添加事件监听器,可以使用 window.parent 访问父窗口并将结果返回给父窗口。下面是一个示例代码片段,其中 window.addEventListener() 用于在页面加载完成后执行一个函数,然后将结果传递回父窗口:
```javascript
window.addEventListener('load', function() {
var result = '这是要传递给父窗口的结果';
window.parent.postMessage(result, '*');
});
```
在这个例子中,我们使用 postMessage() 方法将结果发送回父窗口。第一个参数是要发送的数据,第二个参数是接收消息的窗口的源。'*' 表示可以接收来自任何源的消息。您可以在父窗口中使用 window.addEventListener() 来监听这个事件,并且获取发送的结果。
```javascript
window.addEventListener('message', function(event) {
console.log('从共同窗口收到的结果是:' + event.data);
});
```
在父窗口中,我们监听 message 事件,当共同窗口调用 postMessage() 方法时,我们会接收到一个事件对象,其中包含从共同窗口发送的数据。我们可以通过 event.data 属性来访问这个数据。在这个例子中,我们只是将结果打印在控制台中,您可以根据自己的需要来处理这个数据。
相关问题
window.addEventListener写在共同的JS中,父画面调用该监听返回值
可以使用自定义事件来实现这一功能。在共同的JS中,通过`dispatchEvent()`方法触发自定义事件,并将需要返回的值作为事件对象的属性传递。在父画面中,通过`addEventListener()`方法监听该自定义事件,并在事件处理函数中获取事件对象中的属性值即可。
以下是一个示例代码:
共同的JS中:
```javascript
// 定义自定义事件
const customEvent = new CustomEvent('returnValue', { bubbles: true });
// 监听window对象的click事件
window.addEventListener('click', () => {
// 触发自定义事件,将返回值作为属性传递
customEvent.returnValue = 'Hello World';
window.dispatchEvent(customEvent);
});
```
父画面中:
```javascript
// 监听自定义事件
window.addEventListener('returnValue', (event) => {
// 获取事件对象中的属性值作为返回值
const returnValue = event.returnValue;
console.log(returnValue); // 输出:Hello World
});
```
window.addEventListener写成共同方法父窗口调用返回值
如果您想在父窗口中调用共同方法并获取返回的结果,可以使用下面的代码示例:
```javascript
function addEventListenerAndReturnResultToParent(eventName, callback) {
window.addEventListener(eventName, function(event) {
var result = callback(event); // 调用回调函数获取结果
window.parent.postMessage(result, '*'); // 将结果发送给父窗口
});
}
function callChildWindowMethodAndReceiveResult(methodName, callback) {
window.addEventListener('message', function(event) {
if (event.data.methodName === methodName) { // 判断消息是否为指定的方法
var result = event.data.result;
callback(result); // 调用回调函数处理结果
}
});
var message = { methodName: methodName };
window.frames[0].postMessage(message, '*'); // 向子窗口发送消息
}
```
在这个共同方法中,我们添加了一个新的方法 callChildWindowMethodAndReceiveResult(),它接受两个参数:方法名称和回调函数。这个方法首先添加一个 message 事件监听器,以便在子窗口调用 postMessage() 方法时接收结果。然后,它向子窗口发送一个包含方法名称的消息。在子窗口中,您需要使用 window.addEventListener() 方法监听 message 事件,并检查消息是否为指定的方法。如果是,您可以调用回调函数处理结果。
例如,如果您想在父窗口中调用子窗口中的一个 addNumbers() 方法,并获取它的结果,可以这样使用这个方法:
```javascript
callChildWindowMethodAndReceiveResult('addNumbers', function(result) {
console.log('子窗口返回的结果是:' + result);
});
```
在这个例子中,我们将方法名称 addNumbers 作为第一个参数传递给 callChildWindowMethodAndReceiveResult() 方法,并在回调函数中处理结果。在子窗口中,您需要定义一个名为 addNumbers() 的函数,并在其中计算结果并使用 postMessage() 方法将结果发送回父窗口:
```javascript
function addNumbers(a, b) {
var result = a + b;
window.parent.postMessage({ methodName: 'addNumbers', result: result }, '*');
}
```
在这个例子中,我们将计算结果作为对象 { methodName: 'addNumbers', result: result } 发送回父窗口。父窗口可以像之前的示例一样使用 window.addEventListener() 来监听这个事件,并获取发送的结果。
阅读全文