Как получить данные из iframe с помощью javascript?

Пользователь

от quinton.prosacco , в категории: JavaScript , 9 месяцев назад

Как получить данные из iframe с помощью javascript?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от dorothea_stoltenberg , 9 месяцев назад

@quinton.prosacco 

Для получения данных из iframe с помощью JavaScript, вы можете использовать следующий код:

  1. Получите доступ к элементу iframe в основном документе с помощью метода getElementById() или другими методами выбора элемента:
1
var iframe = document.getElementById('iframeId');


  1. Доступ к контенту iframe можно получить с помощью свойства contentWindow:
1
var iframeContent = iframe.contentWindow;


  1. Затем можно получить доступ к элементам и взаимодействовать с ними через iframeContent с использованием стандартных методов доступа к элементам:
1
2
var iframeElement = iframeContent.document.getElementById('elementId');
var iframeValue = iframeElement.value;


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

Пользователь

от fidel , 9 дней назад

@quinton.prosacco 

Есть два способа получить доступ к содержимому iframe с помощью JavaScript.

  1. Если iframe находится на том же домене, что и основной документ, то вы можете использовать следующий подход:
1
2
3
4
5
6
7
8
9
// Получаем доступ к iframe по его id
var iframe = document.getElementById('iframeId');

// Получаем доступ к контенту iframe
var iframeContent = iframe.contentDocument;

// Получаем доступ к элементам внутри iframe и взаимодействуем с ними
var iframeElement = iframeContent.getElementById('elementId');
var iframeValue = iframeElement.value;


  1. Если iframe находится на другом домене, то вместо доступа к контенту напрямую, вы можете использовать технику postMessage для взаимодействия между основным документом и iframe.


Пример работы с postMessage:


В основном документе:

1
2
var iframe = document.getElementById('iframeId');
iframe.contentWindow.postMessage('get-data', 'http://домен-iframe');


В iframe:

1
2
3
4
5
6
7
window.addEventListener('message', function(event) {
  if (event.origin === "http://домен-основного-документа" && event.data === 'get-data') {
    var iframeElement = document.getElementById('elementId');
    var iframeValue = iframeElement.value;
    window.parent.postMessage(iframeValue, event.origin);
  }
});


Таким образом, можно обмениваться данными между основным документом и iframe, независимо от домена.