在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>