我有一个网页,其中 iframe 中有一个 textarea。我需要使用 JavaScript 从它的子页面读取这个 textarea 的值。
目前通过window.parent.getelementbyID().value在 JavaScript 中使用,我能够获取父页面中除 iframe 中的 textarea 之外的所有控件的值。
任何人都可以给我任何指示来解决这个问题吗?
我有一个网页,其中 iframe 中有一个 textarea。我需要使用 JavaScript 从它的子页面读取这个 textarea 的值。
目前通过window.parent.getelementbyID().value在 JavaScript 中使用,我能够获取父页面中除 iframe 中的 textarea 之外的所有控件的值。
任何人都可以给我任何指示来解决这个问题吗?
如果您的 iframe 与您的父页面在同一个域中,您可以使用window.frames集合访问元素。
// replace myIFrame with your iFrame id
// replace myIFrameElemId with your iFrame's element id
// you can work on window.frames['myIFrame'].document like you are working on
// normal document object in JS
window.frames['myIFrame'].document.getElementById('myIFrameElemId')
如果您的 iframe 不在同一个域中,出于安全原因,浏览器应阻止此类访问。
window.frames['myIFrame'].document.getElementById('myIFrameElemId')
不适合我,但我找到了另一个解决方案。利用:
window.frames['myIFrame'].contentDocument.getElementById('myIFrameElemId')
我在 Firefox 和 Chrome 上检查过。
您应该window从而不是访问框架document
window.frames['myIFrame'].document.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>
这段代码对我有用:
window.frames['myIFrame'].contentDocument.getElementById('myIFrameElemId');