Set content of iframe
I managed to do it with
var html_string= "content";
document.getElementById('output_iframe1').src = "data:text/html;charset=utf-8," + escape(html_string);
How to set HTML content into an iframe
You could use:
document.getElementById('iframe1').contentWindow.document.write("<html><body>Hello world</body></html>");
Here's a jsFiddle, which works in all major browsers.
Note that instead of contentDocument.write
you should use contentWindow.document.write
: this makes it work in IE7 as well.
How to append html content into iframe?
this.iframe.nativeElement.contentWindow.frames.document.body.insertAdjacentHTML('beforebegin', contentToAppend);
this worked for me. I get the iframe element in Angular with ElementRef
& @ViewChild
then dig down to it's HTML body and append HTML content using insertAdjacentHTML
method, in the position desired, available as beforebegin
, afterbegin
, beforeend
and afterend
.
Insert content into iFrame
You really don't need jQuery for that:
var doc = document.getElementById('iframe').contentWindow.document;
doc.open();
doc.write('Test');
doc.close();
jsFiddle Demo
If you absolutely have to use jQuery, you should use contents()
:
var $iframe = $('#iframe');
$iframe.ready(function() {
$iframe.contents().find("body").append('Test');
});
jsFiddle Demo
Please don't forget that if you're using jQuery, you'll need to hook into the DOMReady function as follows:
$(function() {
var $iframe = $('#iframe');
$iframe.ready(function() {
$iframe.contents().find("body").append('Test');
});
});
Html code as IFRAME source rather than a URL
You can do this with a data URL. This includes the entire document in a single string of HTML. For example, the following HTML:
<html><body>foo</body></html>
can be encoded as this:
data:text/html;charset=utf-8,%3Chtml%3E%3Cbody%3Efoo%3C/body%3E%3C/html%3E
and then set as the src
attribute of the iframe. Example.
Edit: The other alternative is to do this with Javascript. This is almost certainly the technique I'd choose. You can't guarantee how long a data URL the browser will accept. The Javascript technique would look something like this:
var iframe = document.getElementById('foo'),
iframedoc = iframe.contentDocument || iframe.contentWindow.document;
iframedoc.body.innerHTML = 'Hello world';
Example
Edit 2 (December 2017): use the Html5's srcdoc attribute, just like in Saurabh Chandra Patel's answer, who now should be the accepted answer! If you can detect IE/Edge efficiently, a tip is to use srcdoc-polyfill library only for them and the "pure" srcdoc attribute in all non-IE/Edge browsers (check caniuse.com to be sure).
<iframe srcdoc="<html><body>Hello, <b>world</b>.</body></html>"></iframe>
Loading a string if HTML into an iframe using JavaScript
You can do it with
document.getElementById('iframe').src = "data:text/html;charset=utf-8," + escape(html);
See the following fiddle for an example
https://jsfiddle.net/erk1e3fg/
How to add Html Content to a new created Iframe in JS
I found the answer. You need to append the new created frame to your body. That initializes the contentWindow and the contentDocument of the iframe.
var frameToPrint = document.createElement("iframe"); frameToPrint.setAttribute("name", "prnt"); document.body.appendChild(frameToPrint);
Modifying the HTML content of an iframe using jQuery
It looks like the code is executing before the iframe contents has actually loaded. Try this code:
$(document).ready(function(){
var $iframe = $("iframe");
$iframe.on('load', (function(){
$iframe.contents().find("body").append("<p>test2</p>");
});
});
Creating an iframe with given HTML dynamically
Setting the src
of a newly created iframe
in javascript does not trigger the HTML parser until the element is inserted into the document. The HTML is then updated and the HTML parser will be invoked and process the attribute as expected.
http://jsfiddle.net/9k9Pe/2/
var iframe = document.createElement('iframe');
var html = '<body>Foo</body>';
iframe.src = 'data:text/html;charset=utf-8,' + encodeURI(html);
document.body.appendChild(iframe);
console.log('iframe.contentWindow =', iframe.contentWindow);
Also this answer your question it's important to note that this approach has compatibility issues with some browsers, please see the answer of @mschr for a cross-browser solution.
Related Topics
Html5 Drag & Drop Change Icon/Cursor While Dragging
Jquery Add Class Based on Page Url
Change Svg Fill Color in :Before or :After CSS
How to Prevent Pull-Down-To-Refresh of Mobile Chrome
Capture Keys Typed on Android Virtual Keyboard Using JavaScript
Why Is Arr = [] Faster Than Arr = New Array
How to Update/Upsert a Document in Mongoose
JavaScript Function to Convert Color Names to Hex Codes
Event When User Stops Scrolling
Rerender View on Browser Resize with React
How to Append Timestamp to the JavaScript File in <Script> Tag Url to Avoid Caching
How to Access Styles from React
Perspective Transform of Svg Paths (Four Corner Distort)
Wait for Background Images in CSS to Be Fully Loaded
Why Can't JavaScript .Play() Audio Files on iPhone Safari
Mongoose - What Does the Exec Function Do
Declaring JavaScript Object Method in Constructor Function VS. in Prototype