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