Is it bad practice to use iframes? Can iframes be translated into images in the same way canvases can?

html, iframe

Solution

However, iframes are not obsolete, but they are frames. Is it considered bad practice to use them?

Sometimes you have to embed a separate HTML document into another, and that is OK. For the record, HTML5 has an entire section dedicated to embedding external content, of which one of the relevant elements is `iframe` (W3C HTML5).

Of course, whether something is good or bad practice also highly dependent on your use case, but best-practice questions tend to be quite broad by nature.

Also, can iframes be rendered to data:png/base64 or whatever, in the same way canvases can?

As a matter of fact, yes, although IE does not appear to support `data:text/html` at the moment:

<iframe src="data:text/html,<!DOCTYPE html><html><body><p>abc"></iframe>

However, this is not the "proper" way to do it (even the validators don't agree on whether the syntax is valid — W3C's Nu validator appears to dislike `data:text/html` because of all the HTML symbols, while Validator.nu only complains about the unencoded whitespace in the DOCTYPE). For embedding raw HTML, you need to use the new `srcdoc` attribute instead of `src` (which has even less browser support):

<iframe srcdoc="<!DOCTYPE html><html><body><p>abc"></iframe>

So, in general, specifying raw HTML for iframes is a bad idea for now, and even once browsers start supporting the `srcdoc` attribute, you should use that over a data URI with the `src` attribute.

Problem

I've seen a lot of complaints all over the internet to not use frames, and it's considered bad practice to use frames, plus they are obsolete. However, iframes are not obsolete, but they are frames. Is it considered bad practice to use them? Also, can iframes be rendered to data:png/base64 or whatever, in the same way canvases can?

Original source

Related problems