Javascript JS postMessage不起作用
所以,在我的域的子域中,我有一个html文件,例如称为Javascript JS postMessage不起作用,javascript,html,iframe,cross-domain,Javascript,Html,Iframe,Cross Domain,所以,在我的域的子域中,我有一个html文件,例如称为file.html,它本身也包括 然后,这个script.js有一些与这个html连接的侦听器,还有向父级发送消息的功能,如下所示: v.sendMessageToParent = function (message) { var jsonMessage = { action: message }; var win = window.frames.target; win.postMessage(
file.html
,它本身也包括
然后,这个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
另一个域也有一些
,我需要这个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命名为“target”:
var win=window.frames.target;
win.postMessage(“message”,*);
from MDN window.frames-返回窗口本身,它是一个类似数组的对象,列出当前窗口的直接子帧。那么,这个构造窗口是什么。框架。目标?我刚从某处获取了这个函数,所以。。。试图更改为window.parent.postMessage,但仍无结果,
<iframe src="http://target.com" name="target">
<script>
var win = window.frames.target;
win.postMessage("message", *);
</script>