Javascript 在接收到响应后捕获iFrame的响应

Javascript 在接收到响应后捕获iFrame的响应,javascript,iframe,Javascript,Iframe,我正在向iFrame发布一条消息。iFrame以布尔值形式返回响应。当响应从iFrame到达父窗口时,我需要捕获响应。我的代码不起作用。你知道这个吗 iFrame <iframe id="opIFrame" src="https://localhost:9443/oauth2/session" > </iframe> 我需要做的是定期接收iFrame的响应。到目前为止,代码正在工作。我为iframe添加了一个eventlistener,如下所示 iframe.ad

我正在向iFrame发布一条消息。iFrame以布尔值形式返回响应。当响应从iFrame到达父窗口时,我需要捕获响应。我的代码不起作用。你知道这个吗

iFrame

<iframe id="opIFrame"  src="https://localhost:9443/oauth2/session" >

</iframe>
我需要做的是定期接收iFrame的响应。到目前为止,代码正在工作。我为iframe添加了一个eventlistener,如下所示

 iframe.addEventListener("message",test,false);
    function test(event){
        alert("test");
    }

但是它不是周期性地触发的,实际上非常简单:您在iframe(作为父窗口的DOM的一个元素)上添加了侦听器,而不是在iframe的窗口上。只要解决这个问题,它就会工作:

var iframe = document.getElementById("opIFrame");

    setInterval(function(){

        message ='test' ;
        console.log('Request From RP: ' + message);

        iframe.contentWindow.postMessage(message,"https://localhost:9443/oauth2/session"); 

    },6000);
iframe.contentWindow.addEventListener("message",test,false);

托菲,我添加了代码。请给我提个主意。那么它至少会开火一次还是根本不会?有错误吗?没有,它至少没有发射一次。也没有出现错误。不,它不工作。我也试过了。事件侦听器未启动。我尝试时,它工作正常,仅使用您的代码进行上述修改,并为域指定不同的值。如果它与域有某种关联,则您应该在控制台中看到一个错误,告诉您不允许执行某些操作。iframe的内容是一个HTML文档,对吗?在firefox中,我没有看到任何错误。但我只是在chrome上测试了一下。它给出“(索引):31未能在“DOMWindow”上执行“postMessage”:提供的目标源(')与收件人窗口的源(')不匹配。“啊哈。”。那么…iframe的内容不是您发布消息时在
中设置的内容?