POSTMessage
时间: 2024-09-09 19:09:41 浏览: 60
`postMessage()` 是一种在浏览器中用于跨源通信的技术,它允许不同源的网页间传递消息。这是通过JavaScript的`window.postMessage()`方法实现的,尤其常用于如框架间的通信(例如React Native中的App与H5页面),或者在拥有安全同源策略限制的场景下,如跨iframe通信[^1]。
**示例1: 跨iframe通信**
```javascript
// 主页面 (父页面)
let iframe = document.getElementById('childIframe');
iframe.contentWindow.postMessage('Hello from parent', '*');
// 如果rame内的页面 (子页面)
window.addEventListener('message', function(event) {
if (event.origin !== 'http://parent.com') return; // 检查来源
console.log('Received message:', event.data);
}, false);
```
**示例2: 微信小程序Webview与H5通信**
在微信小程序中,虽然Webview组件不能直接使用`postMessage()`,但可以通过设置`onLoad`事件监听器来间接实现数据交换[^2]。首先在H5页面中发送消息:
```javascript
window.parent.postMessage('Hello from H5', '*');
```
然后在小程序的Webview上接收并处理消息:
```javascript
wx.createSelectorQuery()
.select('#webviewId')
.fields({
node: true,
})
.exec((res) => {
const webView = res[0].node;
webView.addEventListener('load', () => {
webView.onmessage = function(e) {
console.log('Received message in WeChat:', e.data);
};
});
});
```
请注意,实际使用时需要确保安全性和权限设置正确。
阅读全文