如果用户单击 iframe 中的某个项目应导致在父级中触发函数,那么假设您doStuff
在父级中调用了一个函数,则以下操作将起作用:
window.top.doStuff();
当然,这需要 iframe 的域与父页面的域匹配。
如果需要跨域怎么办?
如果您需要跨域通信,那么 HTML5 postMessage 函数将授权您将父页面注册为 iframe 的侦听器,从而允许 iframe 将消息传递到父页面。
在父 HTML 中,注册一个监听器:
// register to listen for postMessage events
window.addEventListener("message", receiveMessage, false);
// this is the callback handler to process the event
function receiveMessage(event)
{
// you're responsible for your own security. Make sure requests are
// coming from domains you whitelist!
if (event.origin !== "http://example.org:8080")
return;
if(event.data == "click!") {
// do your stuff on the parent page here
}
}
在 iframe HTML 页面中:
// pass the string "click!" to the parent page, where the receiveMessage
// handler will take action when it sees the message matches.
top.window.postMessage("click!", targetOrigin);
有关更多详细信息,请参见window.postMessage。