因此,在我的域的子域上,我有一个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、域名等错误,只有控制台静默。
我哪里错了?
发布于 2017-01-20 20:34:51
可能你忘了将iframe命名为"target":
<iframe src="http://target.com" name="target">
<script>
var win = window.frames.target;
win.postMessage("message", *);
</script>https://stackoverflow.com/questions/41763443
复制相似问题