我已经要求在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秒钟后我没有收到警报。那么有人可以帮我解决我在这里工作的问题吗?
提前致谢
答案 0 :(得分:0)
setInterval的第一个参数应该是一个函数。
window.setInterval(function(){ window.top.postMessage('maintainSession', '*'); }, 10000);
你正在立即执行postMessage,并且无论postMessage()的返回是什么,都会给setInterval。
答案 1 :(得分:0)
我相信你的父窗口本身必须在另一个iframe中,或者如果你使用像bootstrap,colorbox这样的插件或像jsfiddle等在线尝试那么大多数情况下你可以获得iframe的直接父级,如果你使用{ {1}}内的{1}}