Как получить элемент из iframe из другого домена в JavaScript или jQuery? - PullRequest
0 голосов
/ 12 июня 2018

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

Этот URL-адрес отображается в iframeс источником, исходящим из другого домена (домен в URL выше).

Часть моей функции, содержащая этот код, в настоящее время выглядит следующим образом:

if (url) {
    document.getElementById('techtable').innerHTML =
      '<iframe id="myframe" src="' + url + '"></iframe>';
    overlay.setPosition(coordinates);
    var iframe = document.getElementById("myframe");
    console.log(iframe);
    var docu = iframe.contentDocument;
    console.log(docu);
    var elmnt = docu.getElementsByTagName("table")[0];
    console.log(elmnt);
    var idtext = $('elmnt tbody tr:first td:last').text();
    console.log(idtext);
}

Файл console.logна следующем снимке экрана: Console.log's

В результате второй console.log показывает документ из iframe, но возвращает только пустую голову и телотег, а эти теги заполняются в первом журнале.Проблема в том, что я не могу найти причину, почему это происходит.Это может быть тот факт, что источник находится в другом домене, хотя я не вижу никаких ошибок в консоли, или что моя функция / синтаксис неправильный.

Итак, если это возможно, как я могу получитьзначение последнего столбца таблицы в iframe?

1 Ответ

0 голосов
/ 12 июня 2018

Исследование заслуживает две проблемы:

  1. Размещенный код является синхронным - он пытается записать содержимое элемента iframe, прежде чем дать ему возможность загружать содержимое через сеть изURL-адрес, заданный в его атрибуте src.

    Возможно, и, возможно, даже вероятно, журнал second , который был выполнен синхронно, мог показывать документ объекта документа about: blank.изначально загружен в элемент iframe.

    Учитывая, что объекты, зарегистрированные на консоли, как правило, являются активными, запись журнала first может быть обновлена ​​после загрузки содержимого iframe - или запись журнала вснимок экрана был расширен после завершения загрузки.

  2. Доступ к документам из разных доменов может быть заблокирован по соображениям безопасности.Это не обязательно означает, что console.log заблокирован от показа контента, это означает, что доступ к контенту из JavaScript может быть невозможен.

Как отлаживать

a) Доступ к содержимому iframe из прослушивателей событий загрузки, зарегистрированных в элементе iframe.

b) проверка с использованием URL-адреса из того же домена.Если это работает, но не удается получить доступ к документам из другого домена, вам может потребоваться дальнейшее изучение CORS.Обсуждать гипотетические здесь немного рано.

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