Подтвердить что ты не робот

Получить документ IFrame из JavaScript в основном документе

У меня есть этот код HTML:

<html>
  <head>
    <script type="text/javascript">
      function GetDoc(x)
      {
        return x.document ||
          x.contentDocument ||
          x.contentWindow.document;
      }

      function DoStuff()
      {
        var fr = document.all["myframe"];
        while(fr.ariaBusy) { }
        var doc = GetDoc(fr);
        if (doc == document)
          alert("Bad");
        else 
          alert("Good");
      }
    </script>
  </head>
  <body>
    <iframe id="myframe" src="http://example.com" width="100%" height="100%" onload="DoStuff()"></iframe>
  </body>
</html>

Проблема в том, что я получаю сообщение "Плохо". Это означает, что документ iframe не получен правильно, и то, что действительно возвращается функцией GetDoc, является родительским документом.

Я был бы признателен, если бы вы сказали, где я делаю свою ошибку. (Я хочу получить документ, размещенный в IFrame.)

Спасибо.

4b9b3361

Ответ 1

Вы должны иметь доступ к документу в IFRAME, используя следующий код:

document.getElementById('myframe').contentWindow.document

Однако вы не сможете это сделать, если страница в кадре загружается из другого домена (например, google.com). Это из-за браузера Одинаковая политика происхождения.

Ответ 2

Проблема заключается в том, что в IE (который, как я полагаю, вы тестируете) элемент <iframe> имеет свойство document, которое ссылается на документ, содержащий iframe, и это используется до contentDocument или contentWindow.document. Что вам нужно:

function GetDoc(x) {
    return x.contentDocument || x.contentWindow.document;
}

Кроме того, document.all недоступен во всех браузерах и не является стандартным. Вместо этого используйте document.getElementById().