W3C home > Mailing lists > Public > whatwg@whatwg.org > March 2010

[whatwg] location.reload() on document.open()ed documents

From: Maciej Stachowiak <mjs@apple.com>
Date: Tue, 30 Mar 2010 13:38:22 -0700
Message-ID: <659C3E09-1018-46CB-9232-E707747338F6@apple.com>

On Mar 30, 2010, at 7:38 AM, Henri Sivonen wrote:

> The spec says about location.reload():
> "Navigate the browsing context to the document's current address  
> with replacement enabled. The source browsing context must be the  
> browsing context being navigated."
>
> It appears that this is what WebKit and Presto do. However, for  
> document.open()ed documents, it's not what Gecko and Trident do.
>
> On each document.write() on a document.open()ed document, Gecko  
> appends the written string to a cache entry (at the method call  
> time--not at the tokenization time--which makes a difference of the  
> document loads external scripts that also call document.write()!).  
> Upon reload, Gecko parses the contents of the cache entry. This  
> produces interesting results if the document.open()ed document  
> itself calls document.write():
> http://software.hixie.ch/utilities/js/live-dom-viewer/saved/430
>
> Trident does something more complicated, because demo 430 doesn't  
> show the same results as in Gecko. However, http://software.hixie.ch/utilities/js/live-dom-viewer/saved/429 
>  shows that reload() exists in Trident and is not a no-op. Trident's  
> behavior could be explained by Trident making document.write() a no- 
> op when reloading a document.open()ed document. See http://software.hixie.ch/utilities/js/live-dom-viewer/saved/431
>
> Loading demo 429 in WebKit or Presto reloads the top-level document  
> in the iframe causing the alert to run again and again and again.

...

> This makes me wonder: If the two engines with the largest market  
> share both take steps to enable document.open()ed docs to be  
> reloaded, is the behavior needed for optimal Web compatibility? How  
> well are WebKit and Presto getting away with their failure to do  
> what Gecko and Trident do here? It seems that Gecko is getting away  
> with its failure to do exactly what Trident does in the complex cases.

I could not find any bugs in http://bugs.webkit.org/ that were  
identifiably about this issue. Nor in Radar (Apple's internal bug  
tracker). Though I have not done thorough testing, I do not believe it  
is a compatibility issue.

Regards,
Maciej
Received on Tuesday, 30 March 2010 13:38:22 UTC

This archive was generated by hypermail 2.4.0 : Wednesday, 22 January 2020 16:59:22 UTC