Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

About iframes and event listeners

Consider a page that contains an iframe. The iframe source is on another domain.

I'd be interested in 2 things:

  1. Can I create an event listener inside the iframe that listens to events that take place in the parent window (and runs a function in the iframe)?

  2. Can I create an event listener inside the parent window that listens to events that take place in the iframe (and runs a function in the parent window)?

like image 398
zozo Avatar asked Oct 10 '22 22:10

zozo


2 Answers

That's a no on both accounts, cross-domain scripting security measures disallow any cross domain communication.

You might want to take a look at this indepth article about Cross-Domain Communication with IFrames. It talks about what you can and can't do, and provides some alternatives like window.postMessage

like image 76
jaap3 Avatar answered Oct 16 '22 16:10

jaap3


Yes. But it might be more work than you're interested in. You'll need to create a proxy for that page that lives on the same domain as the parent page. Your proxy could be a simple pass-through, but it could very well break the page; some URL-rewriting might be required in order to not break scripts that run on that page that assume things about the context it's being evaluated in, so on that front "it depends."

But your question is "Can you ...?" and the answer is "Yes."

like image 45
T.W.R. Cole Avatar answered Oct 16 '22 16:10

T.W.R. Cole