访问JavaScript中的iframe元素

访问JavaScript中的iframe元素,javascript,iframe,Javascript,Iframe,我有一个在iframe中有一个文本区域的网页。我需要使用JavaScript从其子页面读取此textarea的值 目前,通过在JavaScript中使用window.parent.getelementbyID().value,我能够获取父页面中所有控件的值,iframe中的textarea除外 有人能给我一些解决这个问题的建议吗?如果您的iframe与您的父页面位于同一个域中,您可以使用window.frames集合访问元素 // replace myIFrame with your iFram

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

目前,通过在JavaScript中使用
window.parent.getelementbyID().value
,我能够获取父页面中所有控件的值,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'].document.getElementById('myiframeelMid')

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

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

我在Firefox和Chrome上进行了检查。

这段代码对我很有用:

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

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

函数访问(){
var iframe=document.getElementById(“iframe”);
var innerDoc=iframe.contentDocument | | iframe.contentWindow.document;
console.log(innerDoc.body);
}

两种方式

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


有人能帮我解释一下逻辑吗?可能重复使用在现代浏览器(如Firefox 35)中使用的
window.frames['myIFrame'].contentDocument.getElementById('myiframeelMid')
,注意相同的来源policy@CAW绝对正确,现在可以用了,非常感谢你的建议。但问题是,父页面中的frame id n frame name在运行时会发生更改,因此我们不能使用frame id/frame name作为参考。还有其他方法吗?.Bith父页面和子页面位于同一个域中。如果站点上只有一个iframe,您可以尝试使用
文档,框架[0]。文档
。如果还有更多,则需要将索引更改为其他值。
document.frames
不再有效。改为使用
窗口.框架
.contentDocument
而不是
文档
对meI有效即使网页都处于脱机状态,也会不断遇到安全错误。不要看其他任何东西这是实际的答案,太棒了
window.frames['myIFrame'].contentWindow.document.getElementById('myIFrameElemId')