- From: Ian Hickson <ian@hixie.ch>
- Date: Tue, 14 Feb 2012 00:43:15 +0000 (UTC)
On Thu, 5 Jan 2012, Henri Sivonen wrote: > > Consider https://bug98654.bugzilla.mozilla.org/attachment.cgi?id=77369 > with the popup blocker disabled. > > Chrome, Opera and IE open a new window/tab and load the Mozilla front > page into it. Firefox used to but doesn't anymore. > > As far as I can tell, Firefox behaves according to the spec: Setting > window.location aborts the parser synchronously and the first subsequent > document.write() then implies a call to document.open(), which aborts > the navigation started by window.location. Per spec, aborting the parser doesn't cause document.write() to imply a call to document.open(). Specifically, it leaves the insertion point in a state that is defined, but with the parser no longer active, and discarding any future data added to it. > Note that in this modified case > http://hsivonen.iki.fi/test/moz/write-after-location.html (requires a > click so that there's no need to adjust the popup blocker) the console > says "before" and "after" but not "later" in Chrome and IE. That's consistent with the parser being aborted before the "</head>" is document.write()n. The last "\u003cscript>" never makes it into the parser, it just falls on the floor. > Opera says "before" and "after" and then the opener script ends with a > security error, because write is already a different-origin call, i.e. > setting window.location has immediately made the document in the new > window different-origin. That's definitely wrong, IMHO. Consider if the network responded with a redirect or something. How can you know what the origin is before the navigation is far further along? -- Ian Hickson U+1047E )\._.,--....,'``. fL http://ln.hixie.ch/ U+263A /, _.. \ _\ ;`._ ,. Things that are impossible just take longer. `._.-(,_..'--(,_..'`-.;.'
Received on Monday, 13 February 2012 16:43:15 UTC