Выполнить функцию javascript в другом iframe, когда parent находится в другом домене

На странице A.com есть 2 фрейма: B.com/page1 и B.com/page2. Это код A.com:

<html><body>
    <iframe src="b.com/page1" name="iframe1" id="iframe1">
    <iframe src="b.com/page2">
</body></html>

Я хочу выполнить функцию JS на B.com/page1 от B.com/page2. Оба приведенных ниже примера хорошо работают, когда родитель находится в одном домене, но не в междоменном сценарии:

parent.window.frames['iframe1'].SomeFunction(args);

или же

parent.document.getElementById('iframe1').contentWindow.SomeFunction(args);

Есть ли способ сделать это?

4 ответа

Решение

Вместо

parent.window.frames['iframe1'].SomeFunction(args);

использование

parent.frames['iframe1'].SomeFunction(args);

Вам разрешено пересечь frames коллекция любого окна, на которое вы можете ссылаться, но в этом случае вы пытаетесь пройти рекурсивный window собственностью parent (это окно). Это не разрешено

Нет, браузер не позволяет взаимодействовать между фреймами, которые вообще не находятся в одном домене.

Как утверждает Аарон, ему не разрешено взаимодействовать между iframes, но вы должны взглянуть на easyXDM, это помогает с междоменной связью в javascript:

http://easyxdm.net/wp/

Вот пример, который вы можете искать:

http://easyxdm.net/wp/2010/03/17/sending-and-receiving-messages/

Как уже сказал Аарон, браузеры не позволяют этого, но есть способы обойти это. Вам нужно будет создать небольшой взломать. У Евгения Гладышева есть запись об этом в его блоге.

Другие вопросы по тегам