访问JavaScript中的iframe元素

时间:2009-09-20 14:57:25

标签: javascript iframe

我有一个网页,其中iframe中有一个textarea。我需要使用JavaScript从其子页面读取此textarea的值。

目前,通过在JavaScript中使用window.parent.getelementbyID().value,我可以获取父页面中除iframe中的textarea之外的所有控件的值。

任何人都可以给我任何指示来解决这个问题吗?

6 个答案:

答案 0 :(得分:51)

如果您的iframe与您的父网页位于同一个域中,则可以使用document.frames集合访问这些元素。

// replace myIFrame with your iFrame id
// replace myIFrameElemId with your iFrame's element id
// you can work on document.frames['myIFrame'].document like you are working on
// normal document object in JS
window.frames['myIFrame'].document.getElementById('myIFrameElemId')

如果您的iframe不在同一个域中,则出于安全原因,浏览器应阻止此类访问。

答案 1 :(得分:15)

您应该访问window而非document

的框架
window.frames['myIFrame'].document.getElementById('myIFrameElemId')

答案 2 :(得分:14)

window.frames['myIFrame'].document.getElementById('myIFrameElemId')

不适合我,但我找到了另一种解决方案。使用:

window.frames['myIFrame'].contentDocument.getElementById('myIFrameElemId')

我在Firefox和Chrome上查了一下。

答案 3 :(得分:2)

这段代码对我有用:

window.frames['myIFrame'].contentDocument.getElementById('myIFrameElemId');

答案 4 :(得分:2)

确保您的iframe 已加载。没有jQuery的旧但可靠的方式:

<iframe src="samedomain.com/page.htm" id="iframe" onload="access()"></iframe>

<script>
function access() {
   var iframe = document.getElementById("iframe");
   var innerDoc = iframe.contentDocument || iframe.contentWindow.document;
   console.log(innerDoc.body);
}
</script>

答案 5 :(得分:1)

两种方式

window.frames['myIFrame'].contentDocument.getElementById('myIFrameElemId')

OR

window.frames['myIFrame'].contentWindow.document.getElementById('myIFrameElemId')