在JavaScript中访问iframe元素

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

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

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

如果您的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不在同一个域中,出于安全原因,浏览器应该阻止这种访问。

您应该从window访问框架而不是document

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

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

不为我工作,但我find了另一个解决scheme。 使用:

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

我检查了Firefox和Chrome。

此代码为我工作:

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

确保您的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>