有关如何做到这一点的任何想法?基本上,我有一个在嵌入iframe的网站中运行的会话,即使会话和网站运行得很好,我还需要一种方法来检测用户在app(外部)中注销(在iframe内)。有关如何做到这一点的任何想法?我可以控制函数返回的值,所以我可以像这个服务器端那样做
return/echo "user_logged_out";
但我必须找到一种方法将其发送到应用程序,而不仅仅是退出iframe内的用户,如果这有任何意义。怎么想?
答案 0 :(得分:0)
所以你可以认为真正的应用程序和iframe像父母和孩子一样。在这里,我们可以将iframe称为孩子。你应该做的是,孩子和父母之间的沟通。因此,如果用户从iframe注销,您应该向其父级发送消息,然后您应该从父级获取消息以继续。以下是此操作的一种方法:
iframe方:
的 1 - 强>
parent.postMessage('This message coming from iframe, user loged out', "*");
//这里 parent 是全局javascript对象,function的第一个参数是你的消息,第二个是将接收消息的目标url。目前它是通用的(*)。
<强> 2 - 强>(可选)
window.addEventListener("message", receiveMessage, false);
//如果iframe中有任何收到的消息,则调用receiveMessage()函数。
3 - (可选)如果向iframe收到任何消息,将调用以下函数。在你的情况下,它不会被调用。您想收到来自父方的消息。在这里,您还可以在邮件中发送数据。
function receiveMessage(event) {
var receivedData = JSON.parse(event.data);
console.log('received');
}
家长方:
它也在以相同的逻辑工作。
1 - 将调用receiveMessage()函数。
window.addEventListener("message", receiveMessage, false);
<强> 2 - 强>
function receiveMessage(event) {
console.log(event.data);
}
3 - (可选)以下是从父级发送邮件到iframe的方式。假设你的iframe有id'#iframe':
var child = document.getElementById('iframe').contentWindow;
child.postMessage('Message parent to iframe', '*');
最后注意事项:如果你想传递其他类型的数据,比如对象或数组,请使用JSON.stringify()并发送它,在收到消息后使用JSON.parse()来获取你的真实数据。