[whatwg] Methods defined for one document called after that document is no longer the one being displayed

Ian Hickson ian at hixie.ch
Tue Aug 5 01:12:57 PDT 2008


I would like some input from browser vendors.

Right now, if you navigate an iframe to a document, and take a 
reference to a method defined in that document, and then navigate that 
iframe to another document, and then call the method, browsers differ in 
what they do.

There are several behaviours:

 - In one browser, the Window object changes with each navigation,
   and the global object is that object, and the method runs fine.

 - In one browser, the method call fails, saying that methods can't be 
   called while the document that defined them isn't the active document 
   of the browsing context whose global object is the method's.

 - In one browser, the Window object acts as a kind of view on the global 
   object, which changes with each navigation, leading the method to see 
   the original global object in its scope chain, but the new one if it
   uses the 'window' object. (In this environment, 'this' at the top scope 
   returns the 'window' object, not the global object.)

 - In one browser, the global object and the Window are the same, but the 
   global object is totally wiped out with each navigation, preventing the
   method from accessing its global object's data. (In this browser, the 
   results are slightly different when navigating top-level windows 
   instead of frames.)

These results were derived from:
   http://damowmow.com/playground/demos/global-object/004.html

I propose to adopt the second behaviour above. It seems by far the 
simplest behaviour to define and implement. Are there any objections to 
this? Given the lack of interoperability here, it seems like we aren't 
really constrained to pick something due to compatibility.

The change would be that if a method is invoked when the script execution 
context that the method was running in has a Document object that is not 
the active Document object of its browsing context, then that method 
immediately throws an exception. Access to variables obtained from such 
script execution contexts would be unaffected.

-- 
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