Связь между iFrames? [Дубликат]

На этот вопрос уже есть ответ:

Как вы можете сделать два iFrames друг с другом? Например, я был значением элемента с 2-го iframe, а 1-й iframe имеет на нем элемент отображения. Мне нужно получить значение с 2-го кадра до 1-го. Как мне это сделать? Не говорите использование файлов cookie, потому что это повредит массивной суммой данных.

javascript,html,iframe,html,

12

Ответов: 3


19 принят

Если <iframe>элементы обслуживаются из одного домена, они могут напрямую обращаться друг к другу. Например, iframe1вы могли бы сделать:

document.getElementById('someDiv').innerHTML = 
    top.document.getElementById('otherIframe').contentWindow.
    document.getElementById('someOtherDiv').innerHTML;

Сначала я предостерег вас, что вам понадобятся полные возможности модификации кода для обоих фреймов. Iframes обрабатываются строгой безопасностью; в противном случае я мог бы создать домен «bunkofamerica.com», поставить «bankofamerica.com» в iframe, а затем проанализировать пароль пользователя по мере его ввода. (Банки, как правило, имеют код iframe-busting, но все же ...)

Вы ищете эту собственную функцию: https://developer.mozilla.org/en-US/docs/Web/API/window.postMessage

И вот библиотека github, которую моя компания использует, чтобы сделать ее более кросс-браузерной: https://github.com/daepark/postmessage

jbabey верен, если iframe находятся в одном домене и протоколе, тогда это проще.

Opera Docs объяснила это наиболее подходящими примерами https://dev.opera.com/articles/window-postmessage-messagechannel/#channel


0

Во-первых, единственный способ, которым кадр может взаимодействовать вне его, - это то, что содержимое, загруженное в обоих местах, происходит из одного домена, иначе вы получите ошибку CORS.

Предполагая, что это все соус, я бы создал объект-менеджер объекта окна родительского фрейма.

window.Mgmt = {
    frame1: $('iframe#frame1'),
    frame2: $('iframe#frame2')
}

то в любом из фреймов вы должны иметь доступ к этому объекту, используя window.parent.Mgmt.frame1и т. д.

JavaScript, HTML, IFrame, HTML,
Похожие вопросы