Связь IFrame с IFrame - PullRequest
       2

Связь IFrame с IFrame

3 голосов
/ 12 июля 2011

Есть ли способ для IFrame до IFrame общения через JavaScript

Ответы [ 6 ]

3 голосов
/ 12 июля 2011

Если iFrames совместно используют один и тот же источник домена, вы можете напрямую вызывать Javascript или читать / записывать переменные в каждый iFrame из другого.Вы получаете объект iFrame и получаете объект окна веб-страницы от этого.

Если iFrames не имеют того же происхождения, то современные браузеры не позволят вам общаться с обычным javascript.Единственный способ передачи информации - это обмен сообщениями, который является относительно новой функцией браузера и требует предварительной совместной работы кода обоих iFrames.

2 голосов
/ 10 сентября 2011

Как сказал jfriend00, вы не можете вызывать javascript через домен. Это нарушило бы Политика одинакового происхождения .

Одна из новых функций HTML5 - postMessage . Это позволяет вам отправить сообщение в iframe. Затем для обработки вашего сообщения требуется прослушиватель сообщений о содержимом iframe.

1 голос
/ 15 апреля 2016

Если вам нужно передать значение из одного iFrame другому, вы можете добиться этого, установив скрытое поле в родительском iFrame, а затем получить к нему доступ от дочернего элемента:

Было бы что-то вроде этого:

в родительском:

var input = document.createElement("input" );
input.setAttribute( "type", "hidden" );
input.setAttribute( "id", "combinationType" );
input.setAttribute( "value", "very cool!!!" );
document.getElementsByTagName( 'div')[0].appendChild(input);

у ребенка:

var val = window.parent.document.getElementById('combinationType').value;

Надеюсь, это поможет.

1 голос
/ 06 декабря 2012

Один из способов взаимодействия между iframes с помощью библиотеки dojo dojox cometd dojox.cometd .

Используя это, мы можем перенести каждую функцию javascript на другой iframe или другую страницу.

Мы можем общаться между разными компьютерами с помощью другого браузера или iframe, используя один и тот же домен, но его ограничением является то, что мы не можем общаться с использованием другого домена.

1 голос
/ 29 августа 2012

Как указано в других ответах, существует несколько различных способов взаимодействия между iframe и родительским документом, но требуется контроль над документом iframe.(postmessage и т. д.) Однако, похоже, скоро это станет намного проще, так как webkit уже внедрил новые атрибуты для iframe - один управляет этим поведением и специально позволяет удалять ограничения iframe - а именно, тот же домен.Хотя интересен только html5 / webkit, но показывает некоторые перспективы для классных будущих возможностей с iframes http://www.w3schools.com/html5/att_iframe_sandbox.asp

1 голос
/ 12 июля 2011

Просто перейдите через свойства parent и frames.frameId с contentWindow и contentDocument, помня о политике того же происхождения

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...