所以我的域的子域上我有一个html文件,例如称为file.html
,它本身也包括<script src="https://example.com/script.js">
。
然后,此script.js
具有一些与此html连接的侦听器,以及向父级发送消息的函数,如下所示:
v.sendMessageToParent = function (message) {
var jsonMessage = {
action: message
};
var win = window.frames.target;
win.postMessage(jsonMessage, '*');
};
v.sendActionMessageToParent = function (action) {
var jsonMessage = {
action: 'action',
type: action
};
var win = window.frames.target;
win.postMessage(jsonMessage, '*');
};
然后,在另一个域上,我有一个iframe
,src
file.html
。
这个另一个域也有一些<script src="example.com/main.js">
,我需要这个main.js
来监听从script.js
发送的消息。
在main.js
我有以下代码:
if (window.addEventListener) {
window.addEventListener("message", messageHandler);
} else {
window.attachEvent("onmessage", messageHandler);
}
function messageHandler(event) {
console.log(event.data);
}
但我什么也得不到。不显示 JS、域或其他错误,只是在控制台中静音。
我错在哪里?
可能你忘了把你的iframe命名为"目标":
<iframe src="http://target.com" name="target">
<script>
var win = window.frames.target;
win.postMessage("message", *);
</script>