我有一个网页,其中iframe中有一个textarea。我需要使用JavaScript从其子页面读取此textarea的值。
目前,通过在JavaScript中使用window.parent.getelementbyID().value
,我可以获取父页面中除iframe中的textarea之外的所有控件的值。
任何人都可以给我任何指示来解决这个问题吗?
答案 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')