I have a webpage where there is a textarea within an iframe. I need to read the value of this textarea from its child page using JavaScript.
Presently by using window.parent.getelementbyID().value in the JavaScript, I am able to fetch values of all controls in the parent page except the textarea within the iframe.
Can anyone please give me any pointers to resolve this issue?
6 Answers 6
If your iframe is in the same domain as your parent page you can access the elements using window.frames collection.
// 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')
If your iframe is not in the same domain the browser should prevent such access for security reasons.
7 Comments
document,frames[0].document. If there are more you need to change the index to some other value.document.frames no longer works. Use window.frames instead..contentDocument rather than document works for mewindow.frames['myIFrame'].document.getElementById('myIFrameElemId')
not working for me but I found another solution. Use:
window.frames['myIFrame'].contentDocument.getElementById('myIFrameElemId')
I checked it on Firefox and Chrome.
You should access frames from window and not document
window.frames['myIFrame'].document.getElementById('myIFrameElemId')
Comments
Make sure your iframe is already loaded. Old but reliable way without 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>
Comments
Two ways
window.frames['myIFrame'].contentDocument.getElementById('myIFrameElemId')
OR
window.frames['myIFrame'].contentWindow.document.getElementById('myIFrameElemId')
Comments
this code worked for me:
window.frames['myIFrame'].contentDocument.getElementById('myIFrameElemId');
window.frames['myIFrame'].contentDocument.getElementById('myIFrameElemId')which works in modern browsers (e.g. Firefox 35) -- and pay attention to the same-origin policy