用js写一个window.postMessage实现跨域传参的方法
时间: 2024-04-15 13:32:00 浏览: 156
当使用 `window.postMessage` 方法实现跨域传参时,需要在发送消息的页面和接收消息的页面分别编写代码。以下是一个使用 JavaScript 实现的简单示例:
在发送消息的页面(发送方):
```javascript
// 获取目标窗口对象
const targetWindow = document.getElementById('target-frame').contentWindow;
// 发送消息
targetWindow.postMessage('Hello, receiver!', 'https://example.com');
```
在接收消息的页面(接收方):
```javascript
// 监听 message 事件
window.addEventListener('message', function(event) {
// 验证消息来源,确保只接收来自指定域名的消息
if (event.origin === 'https://example.com') {
// 获取传递的数据
const message = event.data;
// 在控制台打印消息内容
console.log(message);
}
});
```
在发送消息的页面中,首先通过 `document.getElementById` 方法获取目标窗口的引用,然后使用 `postMessage` 方法发送消息。其中,第一个参数是要发送的消息内容,第二个参数是接收方窗口的源(域名),用于验证消息的来源。
在接收消息的页面中,我们通过监听 `message` 事件来接收消息。在事件处理程序中,我们首先验证消息的来源(域名),以确保只接收来自指定域名的消息。然后,我们通过 `event.data` 获取传递的数据,并对其进行处理。
需要注意的是,为了确保安全性,应该始终验证消息的来源,并仅接受来自可信任域名的消息。
希望这个示例对你有所帮助!如有其他问题,请随时提问。
阅读全文