ユーザーが 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を参照してください。