Как вы можете сделать два iFrames друг с другом? Например, я был значением элемента с 2-го iframe, а 1-й iframe имеет на нем элемент отображения. Мне нужно получить значение с 2-го кадра до 1-го. Как мне это сделать? Не используйте файлы cookie, потому что это повредит массивной суммой данных.
Связь между iFrames?
Ответ 1
Если элементы <iframe>
обслуживаются из одного домена, они могут напрямую обращаться друг к другу. Например, в iframe1
вы можете сделать:
document.getElementById('someDiv').innerHTML =
top.document.getElementById('otherIframe').contentWindow.
document.getElementById('someOtherDiv').innerHTML;
Ответ 2
Сначала я предостерег вас, что вам понадобятся полные возможности модификации кода для обоих фреймов. 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 является правильным, если iframes находятся в одном домене и протоколе, тогда это проще.
Операционные документы объяснили это наиболее подходящими примерами https://dev.opera.com/articles/window-postmessage-messagechannel/#channel
Ответ 3
Во-первых, единственный способ, которым кадр может взаимодействовать вне его, - это то, что содержимое, загруженное в обоих местах, происходит из одного домена, иначе вы получите ошибку CORS.
Предполагая, что весь соус, я бы создал объект-менеджер объекта окна родительского фрейма.
window.Mgmt = {
frame1: $('iframe#frame1'),
frame2: $('iframe#frame2')
}
то в любом из фреймов вы должны иметь доступ к этому объекту с помощью window.parent.Mgmt.frame1
и т.д.