Iframe

时间:2016-12-06 22:20:32

标签: javascript jquery html iframe

我已经要求在IFrame和父窗口之间进行会话处理,两者都在不同的域中,所以我开始使用带有2个HTML页面的POC,一个是父窗口,另一个是在按钮单击的Iframe中作为对话框窗口打开。

在对话框窗口中,按时间间隔传递帖子消息。通过抛出错误消息验证父窗口中的消息。以下是我的代码片段,以及我从Google浏览器中获取的代码片段。

父窗口:

<script>
    function openFrame() {
        var iFrame=window.showModalDialog('Iframe.html');
    }

    window.onmessage = function(e){
        if (e.data == 'maintainSession') {
            alert('Active in main!');
        }
    };
</script>

<button id="openFrame" onclick="openFrame()">Open Frame</button>

iframe页面

<script>
    window.setInterval(window.top.postMessage('maintainSession', '*'), 10000);          
</script>

问题是...... 10秒钟后我没有收到警报。那么有人可以帮我解决我在这里工作的问题吗?

提前致谢

2 个答案:

答案 0 :(得分:0)

setInterval的第一个参数应该是一个函数。

window.setInterval(function(){ window.top.postMessage('maintainSession', '*'); }, 10000);

你正在立即执行postMessage,并且无论postMessage()的返回是什么,都会给setInterval。

答案 1 :(得分:0)

我相信你的父窗口本身必须在另一个iframe中,或者如果你使用像bootstrap,colorbox这样的插件或像jsfiddle等在线尝试那么大多数情况下你可以获得iframe的直接父级,如果你使用{ {1}}内的{1}}