Access iframe elements in JavaScript
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.
How can I access iframe elements with Javascript?
If you have the HTML
<form name="formname" .... id="form-first">
<iframe id="one" src="iframe2.html">
</iframe>
</form>
and JavaScript
function iframeRef( frameRef ) {
return frameRef.contentWindow
? frameRef.contentWindow.document
: frameRef.contentDocument
}
var inside = iframeRef( document.getElementById('one') )
inside
is now a reference to the document, so you can do getElementsByTagName('textarea')
and whatever you like, depending on what's inside the iframe src.
Get element from within an iFrame
var iframe = document.getElementById('iframeId');
var innerDoc = (iframe.contentDocument) ? iframe.contentDocument : iframe.contentWindow.document;
You could more simply write:
var iframe = document.getElementById('iframeId');
var innerDoc = iframe.contentDocument || iframe.contentWindow.document;
and the first valid inner doc will be returned.
Once you get the inner doc, you can just access its internals the same way as you would access any element on your current page. (innerDoc.getElementById
...etc.)
IMPORTANT: Make sure that the iframe is on the same domain, otherwise you can't get access to its internals. That would be cross-site scripting. Reference:
- MDN:
<iframe>
Scripting - MDN: Same-Origin Policy: Cross-Origin Script API Access
Getting the contents of iframe
You don't need jQuery to do this necessarily.
var iFrame = document.getElementById('iFrameId').contentDocument;
var desiredElement = iFrame.getElementById('pageBreaker');
Using the document API we can easily get the iFrame element and pull the content document out of it. Then it is trivial locating an element via its ID.
How to pick element inside iframe using document.getElementById
document.getElementById('myframe1').contentWindow.document.getElementById('x')
Fiddle
contentWindow
is supported by all browsers including the older versions of IE.
Note that if the iframe
's src
is from another domain, you won't be able to access its content due to the Same Origin Policy.
How can I access the contents of an iframe with JavaScript/jQuery?
I think what you are doing is subject to the same origin policy. This should be the reason why you are getting permission denied type errors.
Control iframe content with javascript/html
Yes you can. Say your iframe
's ID is 'myIFrame'
<iframe id="myIFrame" src="thispage.html"
width="100%" height="600"
frameBorder="2">
</iframe>
Then, add the following in your JavaScript:
// Get the iframe
const iFrame = document.getElementById('myIFrame');
// Let's say that you want to access a button with the ID `'myButton'`,
// you can access via the following code:
const buttonInIFrame = iFrame.contentWindow.document.getElementById('myButton');
// If you need to call a function in the iframe, you can call it as follows:
iFrame.contentWindow.yourFunction();
Hope it helps :)
Related Topics
Prevent Execution of Parent Event Handler
JavaScript Regex - Look Behind Alternative
How to Format Time Since Xxx E.G. "4 Minutes Ago" Similar to Stack Exchange Sites
Is There a Null-Coalescing (Elvis) Operator or Safe Navigation Operator in JavaScript
What Is Minimum Millisecond Value of Settimeout
Programmatically Lighten or Darken a Hex Color (Or Rgb, and Blend Colors)
Angularjs "Controller As" Syntax - Clarification
Is JavaScript Supported in an Email Message
Call ASP.NET Function from JavaScript
Get String in Yyyymmdd Format from Js Date Object
How to Get the Non-Enumerable Inherited Property Names of an Object
Maximum Size of an Array in JavaScript
How to Convert an Array of Objects to Object with Key Value Pairs
How to Dynamically Change Header Based on Angularjs Partial View
Jquery.Parsejson Throws "Invalid JSON" Error Due to Escaped Single Quote in JSON