The page A.com has 2 iframes B.com/page1 and B.com/page2.
This is the code of A.com:
<html><body>
<iframe src="b.com/page1" name="iframe1" id="iframe1">
<iframe src="b.com/page2">
</body></html>
I want to execute js function on B.com/page1 from B.com/page2.
Both examples below works well when the parent is from the same domain but not in cross domain scenario:
parent.window.frames['iframe1'].SomeFunction(args);
or
parent.document.getElementById('iframe1').contentWindow.SomeFunction(args);
Is there any way to do it?
Instead of
parent.window.frames['iframe1'].SomeFunction(args);
use
parent.frames['iframe1'].SomeFunction(args);
You are allowed to traverse the frames
collection of any window that you can reference, but in this case you are trying to traverse the recursive window
property of parent
(which IS the window). This is not allowed.
No, the browser doesn't allow interacts between iframes that are not on the same domain at all.
As Aaron have already told you, browsers don't allow this, but there are ways around it. You'll need to create a small hack. Eugene Gladyshev has a post on it on his blog.
As Aaron states, it is not allowed to interact between iframes, but you should take a look at easyXDM, it helps with cross domain communication in javascript:
http://easyxdm.net/wp/
Here is the example you might be looking for:
http://easyxdm.net/wp/2010/03/17/sending-and-receiving-messages/