Как получить элемент внутри элемента iframe в Javascript? - PullRequest
6 голосов
/ 20 октября 2011

У меня есть элемент, как показано ниже внутри документа, я могу получить элемент iframe на document.getElementById('iframe_id'), но как получить элемент внутри этого iframe?Я пробовал iframeElement.contentWindow, а возвращенный DOMWindow не имеет свойств.Также пробовал iframeElement.docuemnt и iframeElement.contentDocument, оба они не определены.Как я могу получить это?Я использую последний Chrome в своем эксперименте.

Вот элемент iframe

<iframe id='iframe_id'>
<html>
<body>many content here</body>
</html>
</iframe>

Ответы [ 3 ]

5 голосов
/ 20 октября 2011

Вы можете ТОЛЬКО опрашивать содержимое в iframe, если содержимое имеет тот же протокол, домен и номер порта, что и скрипт, который его запрашивает. Называется ЖЕ ПРОИСХОЖДЕНИЕ

Если это так, то этот код покажет содержимое. Если нет - вы не можете получить доступ к iframe из обычного скрипта на обычной html-странице

Демо - протестировано в IE8, Chrome 13 и Fx6

function showIframeContent(id) {
  var iframe = document.getElementById(id);
    try {
      var doc = (iframe.contentDocument)? iframe.contentDocument: iframe.contentWindow.document;
      alert(doc.body.innerHTML);
    }
    catch(e) {
       alert(e.message);
    }
  return false;
}


<iframe id='iframe_id1' src="javascript:parent.somehtml()"> </iframe>
<br/>
<a href="#" onclick="return showIframeContent('iframe_id1')">Show</a>
<hr/>

<iframe id='iframe_id2' src="http://plungjan.name/"> </iframe>
<br/>
<a href="#" onclick="return showIframeContent('iframe_id2')">Show</a>
<hr/>
4 голосов
/ 20 октября 2011

Имея:

var iframe = document.getElementById('iframe_id');

Чтобы получить документ с контентом, вы можете использовать:

var contDoc = iframe.contentDocument || iframe.contentWindow.document;

Затем вы можете искать свой элемент внутри iframe по id.

0 голосов
/ 20 октября 2011

Вы должны быть в состоянии получить к нему доступ document.getElementById('yourIFrame').document.getElementById('yourElement')

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