报错HyShipTruck.vue:17 Failed to execute 'postMessage' on 'DOMWindow': The target origin provided ('http://example.com') does not match the recipient window's origin
时间: 2024-01-13 07:04:54 浏览: 123
这个错误是由于目标窗口的源与发送消息的窗口的源不匹配导致的。在使用 `postMessage` 方法时,需要确保目标窗口的源与当前窗口的源是一致的。也就是说,你需要将 `http://example.com` 替换为目标 iframe 窗口的源,例如 `http://localhost:8080`。
在你的代码中,你可以这样修改:
```javascript
const iframe = document.querySelector('iframe');
iframe.contentWindow.postMessage('Hello, World!', 'http://localhost:8080');
```
这里假设你的 iframe 所在的页面的源为 `http://localhost:8080`,如果不是,请将其替换为相应的源。
同时,你需要在嵌入的网页中监听 `message` 事件,并校验消息的来源,如下所示:
```javascript
window.addEventListener('message', event => {
if (event.origin !== 'http://localhost:8080') return;
console.log(event.data); // 'Hello, World!'
});
```
同样,这里的 `http://localhost:8080` 也需要替换为发送消息的窗口的源。
阅读全文