- From: Boris Zbarsky <bzbarsky@MIT.EDU>
- Date: Mon, 24 Dec 2012 14:53:19 -0800
- To: David Bruant <bruant.d@gmail.com>
- CC: Anne van Kesteren <annevk@annevk.nl>, www-dom@w3.org, Cameron McCormack <cam@mcc.id.au>, Bobby Holley <bholley@mozilla.com>
On 12/24/12 2:36 PM, David Bruant wrote:
> Only script that existed before the document.open can observe this.
Yes. Like for example the script that called open() and then continues
running.
> Scripts inside the new document think they are in a fresh browsing
> context if I understand correctly.
No. There is only one browsing context. Browsing contexts don't even
change across navigations.
Scripts created after the open() will see a new ES global. Scripts
created before the open() keep seeing the old one as their global.
> From the new document point of view,
> it "feels" like a navigation just occurred. Only the script from the
> previous context can tell the difference.
With s/context/global/ yes. Or of course script from outside the
navigation context altogether.
> The current spec and implementations think of document.open as:
> * before the call, you're in a browsing context
> * after, you're in the same browsing context, but everything except the
> document identity has changed
Yes.
> What about thinking of it the following way:
> * before the call, you're in a browsing context
> * after the call, you're in a new browsing context (navigation)
Navigation doesn't change the browsing context. It creates a new Window
(which is the ES global) and new Document.
> and some script from the previous browsing context has survived and runs *in the
> new context* (the context change happens during the document.open call)
No, the script that called open() needs to keep running against the old
global. Not doing that breaks things, last I checked.
Consider this testcase:
<script>
var x = 1;
window.onload = function() {
document.open();
document.write(x);
document.close();
}
</script>
> I feel this script context change is "light-weight" compared to the
> current solution.
I'm not sure how it is; it's the same amount of specification work....
> I don't know if such a script context change can be implemented in
> JavaScript.
Even if it could be, I think it would break my testcase above, no?
-Boris
Received on Monday, 24 December 2012 22:53:52 UTC