Как получить элемент внутри элемента iframe в Javascript?

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

вот элемент iframe

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

3 ответов


содержимое 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/>

наличие:

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

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

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

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


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