Получить innerText из iframe от родителя

Привет! Я добавляю несколько фреймов на свою страницу. Iframes содержат только одно значение, и я хотел бы получить его от родителя. Я перепробовал многие ответы, опубликованные здесь, о переполнении стека, но ни один из них мне не помог. Ниже я приложил изображение, чтобы вы могли видеть, как встроен фрейм на страницу. Я хотел бы получить значение в красной рамке, чтобы я мог использовать его позже.

Код:

  var graphUrls = tmpSource.getGetFeatureInfoUrl(
    graphCoor, viewResolution, 'EPSG:3857', {'INFO_FORMAT': 'text/html'});
  var frr = document.createElement("iframe");
  frr.onload = function(){
    var jjj = $("iframe body a").text()
    var kkk = $("iframe body #ras-val").text()
    console.log("jjj ", jjj)
    console.log("kkk ", kkk)
  };
  frr.id = sourceParams.year + "-" + sourceParams.month + "-" + sourceParams.day;        
  frr.src = graphUrls
  document.body.appendChild(frr);

1 ответ

Решение

Если возвращенный URL-адрес находится в том же домене, что и основной документ, и только в этом случае,
тогда вы можете передать contentDocument вашего iframe в качестве второго параметра $(selector, context),

// frame is you iframeElement
$('#ras-val', frame.contentDocument).text()

Как скрипка, так как нулевые исходные кадры StackSnippet не позволяют нам получить доступ к внутренним кадрам...

Обратите внимание, что селектор будет относительно этого контекста, поэтому вы не будете передавать "iframe body a" но просто "body a",

И если URL не из того же домена, ваш код переднего плана не может получить доступ к этому документу по соображениям безопасности.

Другие вопросы по тегам