[whatwg] The so-called 'magic iframe' feature

Ian Hickson ian at hixie.ch
Fri Jun 22 13:55:24 PDT 2012


On Thu, 26 Jan 2012, Andrew Oakley wrote:
> > 
> > <iframe> outside a document doesn't initiate a load, so it's case is 
> > different.
> 
> I'm not sure it is - we can create an <iframe> in the document then 
> remove it before it loads.  Most browsers seem to give up on loading the 
> contents of the iframe if you do this (IE continues to delay the load 
> event until it has loaded the iframe).
> 
> As far as I can tell HTML5 says that you shouldn't do anything when an 
> iframe is removed from a document (and therefore the frame should 
> continue to load and delay the load event, assuming it isn't GC'd).
> 
> I think we should be consistent here - if we continue to delay the load 
> events for <img>, <video> and <audio> after they have been removed from 
> the tree then the same should be true for <iframe>.

On Thu, 12 Apr 2012, Ojan Vafai wrote:
>
> We should add a keepalive attribute to iframes that prevents iframes 
> from being unloaded/reloaded when removed from or appended to a 
> document. Similarly, a disconnected iframe with keepalive should load. 
> If the keepalive attribute is removed from a disconnected iframe, then 
> it should unload.
> 
> I'm not terribly happy with the name 'keepalive', but I can't think of 
> anything better at the moment.
> 
> As iframes increasingly become the standard way of achieving certain 
> tasks (e.g. sandboxing), it's increasingly important to be able to move 
> them around in the DOM. Right now, to achieve this sort of keepalive 
> behavior, you have to keep the iframe always appended to the document 
> and position it absolutely as the document changes.

On Thu, 12 Apr 2012, Adam Barth wrote:
>
> We just got finished removing this feature from WebKit because it caused 
> many security and stability problems.  It turns out that there's a lot 
> of code in browsers that can't cope with a disconnected iframe being 
> alive.

I've changed the spec to make removing an iframe from a document cause the 
nested browsing context to be discarded. (This includes when a node is 
moved from one place in the DOM to another.)


On Mon, 16 Apr 2012, Darin Fisher wrote:
>
> Can you hide this behind adoptNode just as we did for "magic iframe"?  
> The nice thing about adoptNode is that the browser gets told both the 
> source and destination parent nodes.  This way there is never a 
> disconnected state.
> 
> So long as we unload when moving between documents, we should be pretty 
> safe as far as the issues which plagued magic iframe are concerned.

On Mon, 16 Apr 2012, Erik Arvidsson wrote:
>
> FWIW, IE used to not reload iframes when they were moved around in the 
> tree. They changed this behavior in IE9 so maybe there was some compat 
> issues?

I couldn't find a browser that let iframes survive even being moved around 
the same document. (I was unable to test Opera or IE, though.)

-- 
Ian Hickson               U+1047E                )\._.,--....,'``.    fL
http://ln.hixie.ch/       U+263A                /,   _.. \   _\  ;`._ ,.
Things that are impossible just take longer.   `._.-(,_..'--(,_..'`-.;.'


More information about the whatwg mailing list