execute javascript function in a another iframe wh

2020-03-03 05:57发布

问题:

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?

回答1:

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.



回答2:

No, the browser doesn't allow interacts between iframes that are not on the same domain at all.



回答3:

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.



回答4:

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/