0
因此,在我的域名的子域名中,我有一个html文件,例如file.html
,它本身也包含<script src="https://example.com/script.js">
。JS postMessage不起作用
然后,这个script.js
与这个网站连接了一些听众,也将消息发送给家长,这一下如下的功能:
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,域或其他错误显示,只是在控制台沉默。
我在哪里错了?
从MDN window.frames - 返回窗口本身,这是一个类似数组的对象,列出当前窗口的直接子帧。那么,这个构建window.frames.target是什么? –
我刚刚从某个地方拿过这个函数,所以...试图改成window.parent.postMessage,还是什么都没有, – Coffee